【Git】Git ~ git diffコマンド ~

■ はじめに

https://dk521123.hatenablog.com/entry/2024/08/11/123351

で、以前、git diffコマンドを利用して、
変更されたファイルだけLinterに書けるといった
Github Actionsを書いてみた。

で、今日、削除したファイルもそのままLinterに書けてしまっていることを
報告頂き、他メンバーにご迷惑をおかけしてしまった。
始めは、ファイル存在チェックだけで済まそうと思ったが、
git diffコマンドの--diff-filterオプションってのが便利そうだったので
メモっておく。

ついでに、git diffコマンド全体を纏めてみる。

目次

【1】git diffコマンド
【2】構文
【3】オプション
 1)--name-onlyオプション
 2)--diff-filterオプション
【4】コマンド例

【1】git diffコマンド

* ステージング・エリアにないファイルの変更状態を確認する

【2】構文

https://tracpath.com/docs/git-diff/
https://git-scm.com/docs/git-diff

git diff [<options>] [--] [<path>]
git diff [<options>] <commit><commit> [] [<path>]

【3】オプション

Options Explanations
--name-only 変更されたファイルの名前のみを表示
--diff-filter 変更状態を指定してフィルタリング表示

1)--name-onlyオプション

* 変更されたファイルの名前のみを表示

2)--diff-filterオプション

* 変更状態を指定してフィルタリング表示
* 例えば、git diff --diff-filter=ACM (追加(A)、コピー(C)、変更(M)) 
 のように複数指定も可能

https://qiita.com/FumiyaShibusawa/items/acc04055b1c9e03cce8a
https://qiita.com/P-man_Brown/items/e932368a1caecb5f15f2

git diff --diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]

# 追加(A)、コピー(C)、削除(D)、変更(M)、名前変更(R)、
# タイプが変更された(T)、マージされていない(U)、不明である(X)、
# またはペアリングが壊れている(B)ファイルを選択
Values Explanations
A 追加
C コピー
D 削除
M 変更
R 名前変更
T タイプ(通常ファイル、シンボリックリンク、サブモジュールなど)変更
U マージ解除
X 不明
B ペアリング解除

【4】コマンド例

#  [インデックス] → [作業ツリー] の差分を見る
git diff

# 次の commit で反映される変更を表示
git diff --cached

# リモートブランチ「develop」とブランチ「origin/develop feature/demo1」との比較
git diff origin/develop feature/demo1

# リモートブランチ「develop」と自分のブランチとの比較
# --name-only: 変更されたファイルの名前のみを表示
# HEAD: 現在のブランチの先頭のコミットへの参照
# -- "sqls/*.sql" : sqls配下のSQLファイルのみ抽出
git diff --name-only origin/develop HEAD -- "sqls/*.sql"

# ..: コミット同士の差分(ベースブランチの変更が含まれる)
# ...: 分岐からの差分(ベースブランチの変更が含まれない)
git diff --name-only origin/develop...origin/feature/demo1

参考文献

http://www-creators.com/archives/755

関連記事

Git ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/06/29/104028
Git ~ 基本編 / 基本コマンド ~
https://dk521123.hatenablog.com/entry/2020/10/02/000000
Github Actions ~ 差分ファイルを抽出する ~
https://dk521123.hatenablog.com/entry/2024/08/11/123351