過去のファイルと比較しよう! git-diffの使い方を解説

こんにちは! ライターのナナミです。

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を使う際の注意点を確認しておきましょう。まずは下記のコマンドをご覧ください。

git diff ブランチA..ブランチB

これは、ブランチAとブランチBを比較するコマンドです。
ブランチ名の間に「..」がありますね。

次に、下記のコマンドをご覧ください。

git diff ブランチA...ブランチB

お気づきでしょうか?
ブランチAとブランチBの間が「…」になっています。この場合、ブランチAブランチBで共通な最後のコミットであるマージベースと、ブランチAを比較するコマンドになります。

そう、「..」と「…」で意味が大きく変わるのです。詳しい解説は下記の記事が行なっています。こちらも確認し、間違えたりしないよう注意してくださいね。

>>比較する時に要注意!「..」と「…」の違い

まとめ

いかがでしたか?

diffはバージョンを管理する時に必須といっても過言ではないものです。難しいものではない上、ファイル自体を変更するコマンドではないので、ぜひ色々ためして覚えていってくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次