takafumi blog

日々の勉強メモ

Git入門 その14 / git diff

環境   git version 1.8.3.1

■ git diff

gitに関わる差分を表示する。

ローカルディレクトリ(ワークツリー)とステージングエリア(インデックス)の差分を表示。
ただし新規ファイルのdiffは取れない。

$ git diff



ステージングエリア(インデックス)とHEADの差分を表示

$ git diff --cached



ローカルディレクトリ(ワークツリー) + ステージングエリア(インデックス)とHEADの差分を表示

$ git diff HEAD



HEADと一つ前のブランチの差分を表示

$ git diff HEAD^ HEAD



ブランチ間の差分を表示

$ git diff X Y

X,Yはgit logの
commit a35d8a266387edca8ca6b5097bcfc5ec066b2dee
sha1を使う。前方7桁でもOK。
つまり
commit 1f49f277d00efac2cd3289991f4351bfbbe4a736
commit 618dc77fe8913fb9645a503a66e259b95fe1bd37
の差分を知りたい場合

$ git diff 618dc77 1f49f27

でdiffを取れる。


+--------------------------+
| ローカルリポジトリ Y |
+--------------------------+
^
| git diff X Y
v
+--------------------------+
| ローカルリポジトリ X |
+--------------------------+
^
| git diff HEAD^ X
v
+--------------------------+
| ローカルリポジトリ HEAD^ |
+--------------------------+
^
| git diff HEAD^ HEAD
v
+--------------------------+
| ローカルリポジトリ HEAD |<--+
+--------------------------+ |
^ |
| git diff --cached |
v | git diff HEAD
+----------------------+ |
| ステージングエリア | -+ |
+----------------------+ | |
^ | |
| git diff |<---+
v |
+----------------------+ |
| ローカルディレクトリ | -+
+----------------------+


その他オプション

オプション 説明
--color-words 差分に色を付けて表示
--check 空白だけの変更を警告する
--ignore-space-change 空白だけの変更を無視する


takafumi-s.hatenablog.com