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