git diff 使い方
ワークツリーとインデックスの差分を表示する
git diff
とするとワークツリーとインデックスの差分が表示される。
ワークツリーと HEAD の差分を表示する
現在のワークツリーが最後のコミットからどのように編集されたかを調べるには
git diff HEAD
とする。
特定のファイルの差分を表示する
「git diff」の後にパスを指定すればよい。 このときに、「git diff」の後にコミットを指定していて うまくいかないような場合は、「–」をはさむ。 たとえば、file1.txt、file2.txt の差分を表示するには
git diff file1.txt file2.txt
git diff -- file1.txt file2.txt
とする。
インデックスと HEAD の差分(次にコミットする差分)を表示する
次にコミットする内容を表示するには「–cached」オプションを使えば良い。
git diff --cached
ワークツリーとあるコミットの差分を表示する
たとえば、HEAD^ との差分は
git diff HEAD^
とする。
git diff HEAD^ -- file1.txt file2.txt
のようにパスを指定することもできる。
二つのコミットの差分を表示する
commit1 と commit2 の差分は
git diff commit1 commit2
とする。また、
git diff commit1..commit2
とすることもできる。このとき、コミットを1つ省略すると HEAD を指定したときと同じように動作する。
patch -p0 コマンドで適用できるパッチを作成する
git diff の出力はディレクトリ a と b 以下のファイルのパッチとなるので
patch -p1 < patchfile
として使用することができるが -p0 オプション用のパッチを作るには「–no-prefix」オプションを使う。
git diff --no-prefix > patchfile
サブディレクトリ内で適用するパッチを作成するには「–relative」オプションを使う。 たとえば、subdir 内で適用するためのパッチを作るには
git diff --no-prefix --relative=subdir > patchfile
とする。パッチファイルを適用するには
patch -p0 < patchfile
とする。
コミット間の差分を色で表示する
「–color-words」オプションをつけると、 コミット間で異なっている部分が色で表される。 たとえば、
git diff --color-words
として使用する。
行末の空白やタブの前の空白インデントを警告する
「–check」オプションをつけると行末の空白やタブの前の空白インデントを警告してくれる。
git diff --check
コミットする前に確認したければ
git diff --check --cached
とする。
参考
- man git-diff
- http://cheat.errtheblog.com/s/git