こんにちは! ライターのナナミです。
Gitを使う上で超便利な比較コマンド、みなさん活用していますか?
なんか色々書き方あるみたいだけど、何が違うの?
という疑問をお持ちの方もいるかもしれませんね。今回はGitの比較コマンド、git-diffについて解説していきます!
基本的な使い方から、オプションを組み合わせる方法、さらに使用時の注意点までご紹介していきます。これで比較の基本はバッチリ! ぜひ覚えていってくださいね。
diffとは?
diffとは、2つのファイルを比較して違いなどを探すことができるものです。例えばAのファイルには名前だけ、Bのファイルには名前と自己紹介が書いてあるとしましょう。
AのファイルとBのファイルを比較すると、自己紹介の有無という違いができているのがわかりますね。これをプログラム上で行なって、違いがあったら教えてくれるのがdiffなのです。
どんな時にdiffを使うべき?
diffを使うべき時とはズバリ、マージをする前です。複数人で開発をしていると、同時進行で作業を行なうために同じファイルを編集する可能性が出てくることがありますよね。
そんな時そのままGitでマージをしてしまうと、誰かが修正したソースを消してしまう可能性があったり、マージするべきソースがわからなくなってしまったりすることもあります。なのでマージをする前には必ずdiffを使って差分を確認するようにしましょう。
git-diffの使い方
Gitにはdiffを行えるコマンドがすでに用意されています。下記のコマンドを使えば、リポジトリの中にあるファイル全てを比較することができます。
git diff
これが一番基本的な書き方です。
簡単ですね!
git-diffの活用例色々
git-diffはオプションを活用することで、色々な組み合わせで比較したり、比較した結果の表示を変えたりすることができます。よく使われるものをピックアップして紹介していきましょう。
差分があるファイル名だけを表示する
複数のファイルを比較した際、とりあえずどのファイルに差分ができているのかだけ確認したい場合がありますね。そんな時は、下記のように記述することで、差分があったファイルのファイル名のみを表示してくれます。
git diff --name-only
細かい差分を確認する
git-diffそのままで比較すると、行ごとにチェックを行なうモードになります。しかし文字の量が多いファイルの一文字一文字を確認したい場合にはちょっと不便ですよね…
そんな時は下記のように書くことで、詳細に差分を確認してくれます。
git diff --color-words
特定のファイルを比較する
全体はやらなくてもいいんだけど、このファイルだけ差分をとりたい。という場合もご安心ください。ファイルパスを指定することで、特定のファイルのみ差分を出してくれます。
git diff [ファイルパス]
ちなみにファイルパスの部分をディレクトリパスにすると、指定したディレクトリのみ差分を出します。覚えておくとちょっと便利です。
その他のオプション
他にもgit-diffのオプションは盛りだくさん。もしこの記事で使いたいオプションが見つからなかったら、下記の記事などで確認してみてくださいね。
git-diffを使う時の注意点
最後に、git-diffを使う際の注意点を確認しておきましょう。まずは下記のコマンドをご覧ください。
git diff ブランチA..ブランチB
これは、ブランチAとブランチBを比較するコマンドです。
ブランチ名の間に「..」がありますね。
次に、下記のコマンドをご覧ください。
git diff ブランチA...ブランチB
お気づきでしょうか?
ブランチAとブランチBの間が「…」になっています。この場合、ブランチAブランチBで共通な最後のコミットであるマージベースと、ブランチAを比較するコマンドになります。
そう、「..」と「…」で意味が大きく変わるのです。詳しい解説は下記の記事が行なっています。こちらも確認し、間違えたりしないよう注意してくださいね。
まとめ
いかがでしたか?
diffはバージョンを管理する時に必須といっても過言ではないものです。難しいものではない上、ファイル自体を変更するコマンドではないので、ぜひ色々ためして覚えていってくださいね!