インデックスとワークツリーの差分
git diff
一番シンプル。
「インデックス」とはコミットするファイルを格納する場所です。
「ワークツリー」は開発作業を行っているディレクトリを指します。
※git add
してワークツリーからインデックスにファイルを格納することを「ステージング」と言います。
コミットとワークツリーの差分
git diff <SHA-1> or HEAD
最新のコミットの場合はHEAD
、それ以外は(コミットオブジェクトのオブジェクト名)
※SHA-1とは?↓コレ
参考:gitで特定のcommitバージョン/リビジョンを指すコレをなんと呼ぶか問題
インデックスとHEADの差分
git diff --cached
git diff --chached HEAD
git diff
の基本は「ワークツリー」に対しての変更を表示します。
ですが、--cached(--staged)
オプションを利用することで、インデックスとHEADの比較を行います。
ブランチ間の差分を調べる
git diff dev..testing
devからtestingの変更差分が表示される。
※逆にしても結果は同じ(プラスかマイナスかの表示が逆転する)
コミット間の差分も確認できる
git diff SHA1..SHA2
リモートとの差分
git diff HEAD..origin/branch
pullする前に、ローカルとリモートの差分を確認できます。
HEAD..origin/branch
の右側が最新とみなされるため、pushするときはorigin/branch..HEAD
にします。
あるコミットの差分
git diff SHA1^..SHA1
同じSHA同士で比較すれば、差分がわかる裏技的な方法。
^
が一つ前のコミットを指しています。
オプション系
差分の数だけ見る
git diff --stat
差分のあるファイル名だけ見る
git diff --name-only
改行コード、空白を無視
git diff -w
空行無視
git diff --ignore-blank-lines
変更点の前後に表示される行数を変える
git diff -U0
単語単位で比較する
git diff --color-words