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

とする。

参考

Tags of current page