Gitのよく使うコマンド集(add, push, commit, reset, revert, cherry-pick, rebaseなど)

Git プログラミング

Gitのよく使うコマンド集についてまとめました。

基本的なgitコマンド一覧

まずは、Gitの基本的なコマンドを使えるようになりましょう

現在のファイルの状態を調べる(status)

git status

赤色のファイルは、変更済みだが、addしていないファイル。
緑色のファイルは、変更済かつaddしたファイル。

ログを調べる(log)

git log

過去のcommitのログを見ることができます。
黄色の文字列がcommitのhash値です。

「:q」で抜け出せます。

以下で、branchを指定して、コミットのログを見ることもできます。

git log <branch名>

ファイルの差分を調べる(diff)

git diff

ファイルの差分を見ることができます。

以下のコマンドで指定したファイルの差分を確認できます。

git diff <ファイル名>

リモートリポジトリからcloneする

git clone https://github.com/<username>/<repository-name>.git

usernameやrepository-nameは、cloneするリポジトリのURLを使用してください。

リモートリポジトリの接続先を確認する(remote -v)

git remote -v

何も表示されない場合は、リモートリポジトリ先が未設定。

リモートリポジトリを追加(remote add)

git remote add origin https://github.com/<username>/<repository-name>.git

usernameとrepository-nameは、追加したいリモートリポジトリの情報を使用してください。

ユーザー名とメールを設定する

git config --global user.name "<名前>"
git config --global user.email <メールアドレス>

上記のコマンドでgitのアカウントの設定情報を変更できます。

基本的には、GitHubなどのアカウントと紐づいているのが望ましい。

インデックス追加(add)

git add <ファイル名>

ファイル名には、git statusコマンドで表示されているパスごと指定すること。

全てのファイルを指定する場合は、以下のコマンドで可能。

git add .

下記のように、正規表現も使えます。

git add *.txt

コミット(commit)

git commit -m"コミットメッセージ"

mオプションでメッセージを追加します。

下記のように、mオプションで複数行のコメントを入力できます。

git commit -m"1行目" -m"2行目" -m"3行目"

下記のように、mオプションなしだと、viエディタでコメントを記載することになります。

git commit 

また、以下のようにEOMを使って複数行挿入することも可能です。

git commit -F- << EOM
> 1行目
> 2行目
> EOM

EOMエディタを使う場合は、メッセージの最後にEOMと入力が必要。

プッシュ(push)

git push origin <ブランチ名>

ブランチ名を指定してローカルリポジトリの情報をリモートリポジトリに同期します。

フェッチ(fetch)

git fetch

リモートリポジトリの情報をローカルリポジトリに取得します。

ブランチの情報やコミットの情報を取得します。

フェッチを行っただけでは、ソースコードの変更はありません。

プル(pull)

git pull

リモートリポジトリのコミット情報をローカルリポジトリに同期します。

リモートリポジトリの差分情報がローカルリポジトリに反映されます。

ブランチ情報の表示(branch)

git branch

ローカルリポジトリのブランチ情報を取得します。

以下で、リモートブランチの情報も取得できます。

git branch -a

この時、remote/origin/xxxx/xxxと赤色の文字がリモートブランチです。

チェックアウト(checkout)

git checkout <ブランチ名>

指定したブランチ名のソースコードの差分をローカルリポジトリに反映します。

ローカルブランチ作成

git checkout -b <ブランチ名>

このコマンドでローカルブランチを新規作成することができます。

この場合、現在指定されているブランチから派生します。

ブランチの削除

git branch -d <ブランチ名>

上記のコマンドでは、コミットがあった場合は、ブランチの削除できないため、以下のコマンドで強制削除が可能。

git branch -D <ブランチ名>

困ったときに使えるgitコマンド一覧

困ったときに使えるコマンドです。

コミットをキャンセル(reset)

git reset <戻りたいコミットのハッシュ値>

キャンセルしたいコミットのハッシュ値ではなく、戻りたいコミットのハッシュ値を指定すること。

addされる前の状態に戻すことができます。

addされた状態に戻すときは、以下のsoftオプションを追記します。

git reset <戻りたいコミットのハッシュ値> --soft

ファイルの変更すらもリセットする場合は、以下のhardオプションを指定します。

git reset <戻りたいコミットのハッシュ値> --hard

前のコミットに追記、コミットメッセージの変更(amend)

git commit –amend

このコマンドをすることで、インデックスに追加されたファイルを前のコミットに追加します。また、その際、コミットメッセージを変更することが可能です。

インデックスに追加ファイルがない場合でもコミットのメッセージだけ追加することが可能です。

pushしたコミットをキャンセルしたい(revert)

pushしたコミットをキャンセルする場合は、以下のコマンドを使います。

git revert <取り消しするコミットのハッシュ値>

このコマンドは、厳密にいうと、キャンセルをするわけではありません。

変更した差分を取り消しするコミットで上書きをするコマンドです。

例えば、+1234567という行を追加したら、-1234567というようにコミットを打ち消します。

他のブランチのコミット情報を取り込む(merge, cherry-pick)

git merge <ブランチ名>

このコマンドをすることで、指定したブランチの差分を全て、現在指定しているブランチにマージすることができます。

1つのコミットだけ取り入れたい場合は、以下のコマンドを使用します。

git cherry-pick <コミットのハッシュ値>

現在のローカルブランチの情報を一時退避したい(stash)

git stash <スタッシュ名>

このコマンドで、現在ローカルブランチにある差分情報を全てスタッシュというスペースに一時退避することができます。

現在、作業途中のファイルを一時退避し、他の作業をするなどする場合に便利です。

フォースプッシュ(push -f)

git push -f origin <ブランチ名>

ローカルブランチの情報を強制的に上書きして同期するコマンド です。

基本的に使わないことが望ましいですが、gitのトラブルシューディングの際に使う場合や、リベースした時などで使う場合があります。

リベース(rebase)

git rebase <ブランチ名>

文字の通り、ブランチのベースを変更します。

例えば、developブランチから派生したfeature/xxxブランチがあった場合、masterから派生させたいと考える場合は、以下のコマンドを打つことで、feature/xxxブランチをmasterブランチから派生させたように差分管理をすることができます。

git rebase master

上級テクニックであり、基本的にはブランチの整理をするためにあるコマンドなので、管理者でなければ、使うことはあまりないと思います。

以上、gitのコマンド集でした。

他にも細かいオプション等いろいろありますので、gitのコマンドを使いこなせるようにしましょう。

コラム

便利なGUIの紹介と私の普段の活用のやり方を紹介します。

今ではIDE上から操作をしたり、SourceTreeという便利なGUIツールもあるので、それらを使うのも良いかと思います。

https://www.sourcetreeapp.com/

GUIのメリットは、ファイルの差分が見やすいという点があります。

また、ブランチ毎のコミットのグラフを見ることができるので、視覚的に理解しやすいです。

しかし、トラブルシューティングには弱いので、私は、GUIとコマンドの両方を活用しています。

例えば、ファイルの差分を見るとき、コミットコメントの記載はGUIを使い、push, pull, fetch, branchの作成などは、コマンドの方が早いのでコマンドでしようしています。

参考にしてもらえたら、幸いです。

人気記事 Springbootの環境構築から Hello worldまで on Mac

人気記事 DockerでMySQLとphpAdminのコンテナを作るやり方

人気記事 ITブラック企業の求人の見分け方!7つのポイント