查找删除两个修订之间的行的提交

Find commit that deleted a line between two revision

我试图找到删除两个修订之间的一行的提交。直接没找到

这是我在下面尝试的:

git blame $v1..$v2 -L $line,+1 --reverse -- $file_name

然后这个命令行 returns 被删除的行而不是有问题的提交。我使用这些方法搜索这个字符串:

1- 在修改了该行所在函数的提交中搜索。

git show $commit:$file | grep -Fq "$st"

2-使用字符串搜索

git log $v1...$v2 --pretty=format:"%h"  -S"$String" $file

首先,在某些情况下我找不到包含该行的函数(或者它不存在)。在第二种方法中,字符串可能会在几种情况下重复,我需要检查所有这些。

我需要一种更好的方法来找到删除该行的提交。

我一般用pickaxe search

git log -SFoo -- path_containing_change 

列出了引入字符串 Foo 的提交,以及 Foo 被 删除 的提交。
是的,使用这种方法,您需要审查这些提交以确定添加或删除哪一个 Foo.