はじめに
普段の業務でよく使っているコマンドとその使い所の紹介です。
Gitの使い方をなんとなく知っていることを前提にしています。
使い所をコマンド実行時の心境とともにお伝えします。
「どのファイル触ったっけ?」「どこで競合起きてんの?」 git status
リポジトリの状態を確認するコマンド、とりあえず何かあるたびにこれ。
「作業ブランチで作業するでー。」 git checkout -b <branch name>
ブランチを作成し、作成したブランチへ切り替えるコマンド。
下記でも同様の結果を得られますが、コマンド一発で切替までやってくれるのでこちらのほうが早いです。
git branch <branch name>
git checkout <branch name>
「この変更全消しで。」「やっぱ、今のなし。」 git checkout .
ソースの変更をcommitしたところまでに戻したいときに使うコマンド。
ソースファイルが前回commitしたところ(HEAD)に戻ります。
git checkout <file path>
としてやると部分的に戻すこともできます。
「あ、今のcommitメッセージちょっと待った。」 git commit --amend
commitメッセージを書いたものの、なんとなくイマイチなときに使えます。
上記コマンドで直前のcommitメッセージを編集できます。
「あ、今のcommitちょっと待った。」 git reset HEAD^
commitしたものの、commit内容にいらないファイルや足りないファイルがあったときにcommit前からやり直せます。(push前)
ただし、commitしたものをpush済であれば、revertするか追加変更をcommitするかのほうがよいです。
「このバグいつからあんの?」「なんでこんなソースなん?」 git log -p -- <file path>
特定のファイルの変更履歴を表示させるコマンドです。謎のソースコードやバグの混入原因を調べるのに使っています。
次のコマンドも合わせて使うことも多いです。
「このcommitで何があったんや・・。」 git show <commit id>
commit単位でどんな変更があったのをか調べるコマンドです。上のコマンドと合わせてバグが混入したcommitの内容を確認し、ほかに怪しいところがないかが見られます。
「ソースコード記述完了、内容確認するで。」 git diff HEAD
HEADからの変更分を表示させるコマンドです。commit前のチェックで変なところがないか、余計な箇所を編集していないかを確認するのに使っています。
「えーい、変更ファイル全部がcommit対象じゃー。」 git add -u
git管理下にあるファイルで変更があるものすべてをstaged状態にするコマンドです。
git diff HEAD
で変更を確認した後に使用することをおすすめします。変更差分が多い場合は次のコマンドを使用しています。
「作業分をセーブしていくで。」 git add -p
インデックスに追加するソースをファイルの行単位で選択できるコマンドです。このコマンドを利用することで大きなcommitを意味のある単位に分割することも可能です。コマンドラインのyだとかnだとか聞かれるところで無回答のまま回答するとそれぞれの回答の意味を教えてくれる(はず)です。
「commit前の最終チェック!」 git diff --cached
HEADからの変更分を表示させるコマンドですが、git diff HEAD
と違ってインデックスに追加しているものだけを対象とします。
これからgit commitを叩くという直前で使用し、commit内容の最終チェックしています。
作業完了時は以下のコマンドを繰り返すことでソースコードをcommitしています。
git status
→ git diff HEAD
→ git add -p
→ git diff --cached
→ git commit
おわりに
普段の業務で使っているコマンドを挙げてみました。ローカルでのgit操作は上記コマンドたちがあればだいたい事足りる気がします。
説明が変だとか間違っている箇所などあればご指摘下さい。
また、他にもこんな便利コマンドがあるよというのがあれば教えて下さい。