開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

git diff の基本動作のまとめと、便利オプションベスト5

最終更新:2017-07-23 by Joe

git diffコマンドの動作仕様と、よく使う便利オプションベスト5です。

ブランチ管理に必須コマンド「git diff」ですが、だいたいよく使うオプションは決まってきます。かいつまんで紹介しますね。

git diffの動作の基本を理解する

git diff のオプションの前に、git diffの基本動作のおさらいです。

git diffは、基本は作業ツリー(自分が作業しているファイル群)を調べますすなわち、「比較元 → 作業ツリー」と比べた時、何が変わったか?を表示します。

「比較対象」の指定を省略すると、デフォルトで「比較元=インデックス」となり「インデックス→作業ツリー」という比較動作をします。

そこにコミットを指定してやると、インデックスでなく、コミットを比較元にします。// [コミット] → [作業ツリー] git diff <commit>

そこにコミットをもう一つ指定してやると、作業ツリーでなく、コミット同士を比較します。

また、--cachedオプションにより、作業ツリーへ対する比較でなく、インデックスへ対する比較にすることもできます。このときのデフォルトは、比較元が、HEADとなります。

git diff による比較

git diff の基本動作

 

さて、それでは早速、よく使うオプションの紹介です。

[Best 1] 差分が生じたファイル名だけを表示するgit diffオプション

ワークツリー内の変更があったファイルの「ファイル名だけ」を表示します。

diffの比較対象はインデックスとなります。

通常の開発作業では、以下のようなステップがかなり多いと思います。いろいろガチャガチャとファイルに変更を加えてしまって「あれ・・、どれとどれ変更したっけな・・?」という時によく使います。

[Best 2] ステージに上げたファイルを比較するgit diffオプション

これも開発中によくありますが、git addしてインデックスにファイルをあげたあと、コミットする直前に「何がコミットされるか?」を確認するためによく使うオプションです。

上述の通り、いつもは「ワーキングツリーへの差分」を見ていたのですが、それを--cachedオプションを付ける事により、「インデックスへの差分」を調べることができます。

commit を実行する直前に、念のため・・といった最終確認の目的で、非常によく使いますね。

[Best 3] スペースの差分を無視するgit diffオプション

「-w」「-b」は、スペース(whitespace)だけの違いを、変更とみなさず、無視するオプションです。整形のため整えただけなので、それは差分として表示しないでほしい時、ありますね。この2つは微妙に違うのでご注意下さい。だいたい私は「w」を使っている気がします。

 

[Best 4] 文字レベルで違いを表示するgit diffオプション

git diff は、通常は行の差分を表示するのですが、「--word-diff」オプションを付けることにより、文字レベルで違いを表示してくれます。これは便利ですね。

後者は--word-diff=colorオプションと同じですが、こちらは文字の色が変わるだけになるので、こちらのほうが差分が見やすい場合があるかもしれません。

[Best 5] 比較するファイルを限定するgit diffオプション

比較範囲を限定するオプションというか、方法です。

パスには、ファイル名やディレクトリ名を指定できます。

よく似たオプションに、git オブジェクトの限定方法があります。

「ーー」の使い方や、「:」の使い方はgit で一貫しているようですので、覚えておくとほかのgitコマンドでも、応用がききそうです。

 

git diff オプションの参考サイト

git diffに関してです。