What is it, naokirin?

私の使うGitコマンドまとめ 見る編

前回はGitを使う上で絶対に必要なコマンド(+オプション)について書いてみました。

実際には他にも必要なコマンドはたくさんありますが、今回はそのうちでも「見る」ということに焦点を当てたコマンドをまとめてみようと思います。

git status (現在の状態を見る)

まずは現状を知ることから。

git status

とすると、現在のブランチとコミットされていない、またインデックスに記録されていないファイルが表示されます。

-s

簡潔にワーキングツリーの状態を知るときには

git status -s

を使うといいと思います。

git diff (差分を見る)

次にワーキングツリーの状態から、インデックスの状態の差分を見る場合です。

git diff

とすると、現在のワーキングツリーの状態からインデックスとの差分が表示されます。

さらに、

git diff HEAD~3

のようにすれば、HEADから3つ前のコミットと現在のワーキングツリーとの差分を見ることもできます。もちろん、ハッシュ値などでも指定できます。

また、コミット間の差分は

git diff <コミットA>..<コミットB>

のようにすると見れます。ちなみに".."は空白でもできます。

--cached

HEADとインデックスの差分を見るときにはこのオプションを付けてみると見ることができます。

git ls-files (管理しているファイルを見る)

たまにGitで管理しているファイルがどれだけあるのか見たいこともあります。
そんな時には

git ls-files

と叩くと見ることができます。"ls-file"ではないので注意。

git shortlog (軽くコミットログを見る)

git log まで見る必要はないけど、コミットメッセージの一覧が見たい。

なんて時は

git shortlog

とすれば見れます。私はあんまり使わないですが…

git log (コミットログを見る)

見る系のコマンドの中でもよくオプションを付けて叩くことの多いコマンドです。

単に

git log

と叩くとコミットのハッシュ値、コミットした人、日付、コミットメッセージがコミット毎に最新のものから順番に並んで表示されます。

さらに、あるコミット以前のログを見る際には

git log <コミットA>

のように指定すると見ることができます。

間のコミットを見る際には

git log <コミットA>..<コミットB>

とすれば見ることができます。ただしコミットAより後のコミットから表示されます。

--oneline

コミットのハッシュタグとメッセージの1行目をHEADから順に表示します。

--decorate

ブランチ名や現在のHEAD、タグなどを表示します。

--graph

コミットログをグラフで表示してくれます。

--stat

コミット毎にどのファイルが修正されたかを表示してくれます。

--summary

コミット時の変更されたファイルの表示をします。

-数字 (-n 数字)
git log -5

でHEADから5つ分のコミットを表示します。

--branches

ブランチをすべて表示します。リモートの全てのブランチは表示しません。

-p

コミットログとともに完全な差分を表示します。

git reflog (HEADの遷移を見る)

コミットの修正などでHEADがあっちこっちを移動していると、HEADの位置を間違えることもよくあります。
そういうときにはHEADの遷移を見ることができる git reflog を使います。

git reflog

とすると

51d11e0 HEAD@{0}: commit: コミットしました
0a4ac5d HEAD@{1}: checkout: moving from master to branch01
…

のように表示されます。このうち

HEAD@{数字}

の部分は、そのコミットを指してくれます。
つまりハッシュ値を指定する代わりにこのHEAD@{数字}を使っても同じになります。

git show (コミットの詳細を見る)

git show

とするとHEADの差分などを見ることができます。

他のコミットを見る際には

git show <コミットA>

のようにすることでできます。

git grep (ワークツリーのファイルを検索する)

リポジトリで管理されているファイルを検索することができます。

-n

検索に一致した行数を表示します。

-p

検索に一致した行がどの関数に存在するかを表示します。

git blame (ファイル内の行ごとの最終更新を見る)

リポジトリで管理されているファイル内の行ごとの最終更新を見ることが出来ます。
行ごとにコミット(のハッシュ値)、コミッター、更新日が分かります。
問題が起きたときなどにどのコミットで変更されたかを探すなどするときに便利です。