Gitで差分を確認する方法!git diffの使い方まとめ

git
\ Gitがよく分からない初心者の方へ /
さわっておぼえるGit入門
Gitがよく分からない初心者でも、
この1冊で基本操作を一通り理解できます。
👉 Amazonで詳しく見る
Kindle Unlimitedなら無料で読めます
▶ 無料で読む(Kindle Unlimited)

今回は、Gitで差分を確認する方法について解説します。
Gitを使っていると、次のような場面はありませんか?

  • どこを変更したのか確認したい
  • commit前に変更内容を見たい
  • 昨日の修正との差分を確認したい
  • git diffの使い方がよく分からない

このようなときに使うのが git diff コマンドです。

git diff を使うことで、ファイルの変更内容を簡単に確認できます。
commit前の確認やレビュー時にも使うことができるコマンドです。

実はコマンドを使うよりもVSCodeなどで、差分表示するほうが見やすいです。
ですが、SSH環境などエディタが使えない場合には、このコマンド一択になります。

今回は、初心者向けに git diff の基本的な使い方から、よく使う便利な差分確認方法までまとめて解説します。

git diffとは?

git diff は、Gitで「変更差分」を確認するためのコマンドです。

例えば、次のような比較ができます。

  • 編集前と編集後の差分
  • commit前の変更内容
  • branch間の違い
  • 特定commit同士の違い

Gitでは非常によく使うコマンドなので、覚えておくとかなり便利です。

Gitで差分を確認する基本コマンド

まずは基本的な使い方です。

git diff

これで、まだstageしていない変更内容を確認できます。

例えば、下記のように表示されます。

% git diff
diff --git a/practice.txt b/practice.txt
index da5175d..2cdf0b1 100644
--- a/practice.txt
+++ b/practice.txt
@@ -1,4 +1,4 @@
 1回目の変更
 2回目を変更してみたよ
 ファイルを修正してみました!
-マージのテストです。
\ No newline at end of file
+マージのテストです。ほげほげ

何も変更がない場合は、コマンドを実行しても表示されません。

表示の見方

記号 意味
+ 追加された行
- 削除された行
@@ 変更位置

つまり、先ほどの下記は「ほげほげが追加された」という意味です。

+マージのテストです。ほげほげ

変更の場合も-で削除表示で、下に+で追加表示されます。

stageした変更との差分を確認する

git add した後の差分を確認したい場合はこちらです。

git diff --cached

または、

git diff --staged

どちらでもOKです。
これで、ステージエリアに入ったファイルの変更を確認できます。

commit前の最終確認として使うことがあります。
ステージエリアにファイルがない場合は何も表示されません。

commit同士の差分を確認する

特定のcommit同士を比較したい場合はこちらです。

git diff コミットID1 コミットID2

例:

git diff abc123 def456

これで、2つのcommitの変更内容を確認できます。
先に元にしたい「コミットID1」を指定し、その後に「コミットID2」を指定することで、「コミットID1」から「コミットID2」までにどういう変更があったか確認できます。

branch間の差分を確認する

branch同士を比較したい場合はこちらです。

git diff branchA branchB

例:

git diff main feature

これで、mainfeature の違いを確認できます。
merge前の確認でも使うことができます。

特定ファイルだけ差分を確認する

ファイルを指定して確認することも可能です。

git diff ファイル名

例:

git diff app.js

特定ファイルだけ見たいときに便利です。

変更されたファイル一覧だけ確認する

差分内容ではなく、変更ファイル一覧だけ確認したい場合はこちらです。

git diff --name-only

例:

README.md
app.js
style.css

変更したファイルの一覧を見たい場合に使えます。

どれくらい変更されたか確認したい場合

変更されたファイルと、変更量だけを見ることもできます。

git diff --stat

例:

 app.js    | 10 +++++++---
 style.css |  5 +++--

「どのファイルがどれくらい変わったか」をざっくり確認できます。

直前commitとの差分を見る

直前のcommitとの差分はこちらです。

git diff HEAD~1

または、

git diff HEAD^

どちらでも直前のコミットとの差分を確認することができます。

最新commitの変更内容を見る

最新commitだけ確認したい場合は、下記コマンドが使えます。

git show

これはgit diffとあわせて、よく使われます。

よくあるgit diff関連コマンドまとめ

使われそうなコマンドのまとめです。

コマンド 内容
git diff 未stage変更を見る
git diff --cached stage済み変更を見る
git diff HEAD 現在の変更全部を見る
git diff branchA branchB branch比較
git diff commit1 commit2 commit比較
git diff --name-only ファイル一覧のみ
git diff --stat 変更統計

git diffで差分が表示されない原因

git diffで差分が表示されない原因です。

git add済み

git diff は未stage変更のみ表示します。

つまり、下記のようにステージエリアに追加した場合は表示されません。

git add .

その場合はこちらです。

git diff --cached

commit済み

すでにcommit済みの場合も git diff では表示されません。

commit比較を使います。

git diff HEAD~1 HEAD

git diffは使わない?

ここまで説明をしてきましたが、VSCodeやSourceTreeなど、GUIで見れるツールがあれば、そちらのほうが見やすいためおすすめです。

GUIツールだと、左右に並べて表示ができ、すぐにコードの修正にとりかかれます。
筆者も基本的にはGUIツールで差分確認をしています。

git diffを使うのは、下記のような場合です。

  • SSHコマンドなどで、サーバーにリモート接続している
  • 数行変えたのをサクッと確認したいとき

VSCodeのGUIツールが使えない場合はgit diff一択になります。
また、少しの変更などをサクッとCUIから確認したい場合もgit diffを使うと良いかと思います。

まとめ

今回は、Gitで差分を確認する方法について解説しました。
特に使いそうなのは下記のコマンドかと思います。

git diff
git diff --cached
git diff --name-only
git diff --stat

commit前に差分確認する癖を付けるだけでも、ミス防止にかなり役立ちます。
GUIで差分が確認できる場合には、そちらのほうが見やすいです。

VSCodeなどのエディタを使っている場合は、そちらで差分確認する癖をつけていきましょう。

コメント