[Git] 特定の行がいつ削除されたのか知りたい


やりたいこと

Git上で管理しているコードで特定の行が消えていることがわかった。
行が消えてしまった時点以降に作成されたデータを精査したいので、いつ削除されたのか知りたい。

やり方

以下のコマンドを実行して、探していたコミットを見つけたら後はコミット番号を使って煮るなり焼くなり。

$ git log -p -S'削除されたコード' app/models/hogehoge.rb
commit 52e41af01XXXX3694654XXXX2750e59eXXXXa0d5
Author: Henko Shitahito <[email protected]>
Date:   Wed Mar 8 11:10:31 2017 +0900

    :sparkles: hogehoge

diff --git a/app/models/hogehoge.rb b/app/models/hogehoge.rb
index a3d6XXX..609fXXX 100000
--- a/app/models/hogehoge.rb
+++ b/app/models/hogehoge.rb
@@ -78,18 +78,7 @@ class Hogehoge

-      # 削除されたコード
+      # 代わりに追加されたコード


commit XXXX...

コマンドの意味

git log : 変更履歴を表示
-p : 各コミットの diff を表示
-S '文字列' : diffの内容を検索

おまけ:背景とか

今は使わていないメソッドがあり、そのメソッドが動いていたときは正常に動いていた部分がエラーに。
どこで呼ばれていたメソッドかは、なんやかんやで分かったが、その呼出箇所がいつ誰に削除されたのかうまく辿る方法がないか調べて辿り着いた。

GitやGithubはもっと使いこなせるようにならないと。

参考

git logでコミットの差分の中身で絞り込む
Gitで行が削除されたコミット番号を知る方法