今回は、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
これで、main と feature の違いを確認できます。
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などのエディタを使っている場合は、そちらで差分確認する癖をつけていきましょう。

コメント