テック技報最新号へ →
コード

Git: git log -S で「この文字列を足した/消したコミット」を探す

git log -S "文字列" は、その文字列の出現回数が変わったコミット(追加・削除したコミット)だけを列挙する。関数がいつ入ったか、いつ消えたかを探すのに速い。

@vivekgowdas1910 · 投稿 2026-10-28
#git#history#debug

いつ使うか

  • ある関数・設定値・定数が「いつ、どの変更で入ったか」を知りたいとき
  • 消えてしまったコードがどのコミットで消されたかを探したいとき
  • git blame は今ある行にしか使えないが、-S は消えた行も追える

やり方

sh
# 文字列を追加・削除したコミット(diff も表示)
git log -S "parseConfig" -p

# 特定ファイルに絞る
git log -S "MAX_RETRY" -- src/config.ts

# 正規表現で探す
git log -S "retry\(.*\)" --pickaxe-regex

# 出現回数が変わらない編集(行の書き換え)も拾いたいなら -G
git log -G "timeout\s*=" -p

注意点

  • -S は「出現回数が変わった」コミットだけを出す。同じ行の中で前後を書き換えただけ(回数が同じ)のコミットは出ない。それも見たいときは -G<正規表現>(diff の追加・削除行にマッチするか)を使う。
  • 大きなリポジトリでは全履歴を走査するので時間がかかる。パスや --since で絞る。
  • 行の範囲の変遷を追うなら git log -L 10,30:path/to/file も便利。

出典

X の元の投稿を開く