git diff

コマンドの概要

基本はワーキングツリーとインデックス、コミットとの差異を出力するコマンド。
インデックスとコミットの差異を出力することもできる。

コマンドの使い方

ワーキングツリーとインデックスの差異を出力

1$ git diff

まだgit addしていない、ファイルの変更内容が確認できる。

ワーキングツリーとHEADの差異を出力

1$ git diff HEAD

まだgit commitしていない、ファイルの変更内容が確認できる。
ワーキングツリーとHEADの比較なので、git addしていても変更内容が出力される。

インデックスとHEADの差異を出力

1$ git diff --cached

HEADとステージングされた内容の比較なので、git addされた変更内容が出力される。
特定のコミットを指定するとそのコミットからの変更内容が出力される。

コミット間を比較する

1$ git diff <commit1> <commit2>

<commit1> から<commit2> への変更内容を出力する

1$ git diff <commit1> .. <commit2>

<commit1>と HEAD の変更内容を出力する

1$ git diff <commit1>..

これも同じくコミット間の比較。どちらかのコミット指定を省略したときに HEAD を指定するのと同じとなる。

ブランチは特定のコミットのポインタなので、コミットを指定するときにブランチ、リモート追跡ブランチを指定することもできる。

1$ git diff master origin/master

また、<branchA>の<file1>と<branchB>の<file2>を比較するには

1$ git diff branchA:file1 branchB:file2

マージベースとの比較は

1$ git diff <commit1> ... <commit2>

.が3つになると<commit1> と<commit2>の共通のご先祖様コミットと<commit2>の変更内容が出力される。どちらかのコミット指定を省略するとHEADが指定される。

ステータス表示

1$ git diff --stat

個別の変更内容は出力されないが、変更となったファイル、追加、削除される行数などが確認できる。