こんにちは!
先日、久々に git diff
コマンドを使ったので復習。
git diffの概要
git diffは変更内容を確認するために使います。
元ネタはこちら
- 基本的な使い方
git diff # 作業ディレクトリとステージング領域の差分
git diff --cached # ステージング領域と最後のコミットの差分
git diff HEAD # 作業ディレクトリと最後のコミットの差分
例えば、手元の App.tsx を修正して git diff
を実行したところ、以下の出力が得られました。
% git diff
diff --git a/src/App.tsx b/src/App.tsx # aは変更前、bは変更後
index abaedd2..a9559d3 100644
--- a/src/App.tsx # 削除された部分
+++ b/src/App.tsx # 追加された部分
@@ -20,7 +20,7 @@ import {
format,
startOfWeek,
endOfWeek,
- // startOfMonth, # ここが削除された
+ startOfMonth, # ここが追加された
// endOfMonth,
} from 'date-fns';
import { v4 as uuidv4 } from 'uuid';
VSCodeなどでも差分は確認できますが、コマンドラインでも確認できるようにしておくと、役立つことがあります。
主要なオプション
私は基本的な使い方をすることが多いですが、せっかくなのでオプションを調べました。
- 出力形式の制御
-
--stat
: 変更の統計情報を表示 -
-p
: パッチ形式で表示(デフォルト) -
--name-only
: 変更されたファイル名のみ表示 -
--name-status
: ファイル名と変更種類(追加/削除/変更)を表示
- 差分の検出設定
-
-B
: 空行の変更を無視 -
-w
: すべての空白の変更を無視 -
-b
: 行末の空白の変更を無視 -
--word-diff
: 単語単位での差分を表示
- ファイルの変更検出
-
-M
: リネームされたファイルを検出 -
-C
: コピーされたファイルを検出 -
--find-copies-harder
: より詳細なコピー検出
よく使うユースケース
以下は、私がよく使うケースです。
- コミット間の差分確認
git diff commit1 commit2 # 特定の2つのコミット間の差分
git diff HEAD^ # 最新のコミットと1つ前のコミットの差分
- ブランチ間の差分確認
git diff branch1 branch2 # 2つのブランチの差分
git diff main..feature # mainブランチとfeatureブランチの差分
- 特定のファイル/ディレクトリの差分確認
git diff -- path/to/file # 特定のファイルの差分
git diff -- directory/ # 特定のディレクトリ内の差分
まとめ
git diff コマンドを使えるようにしておくと、コミット間の差分やブランチ間の差分を素早く確認することができます。
様々なツールでも同様のことができますが、コマンドラインでも使えるようにすることをおすすめします!