如何找到删除某些代码的Git提交?

时间:2014-06-12 20:56:21

标签: git

我在回购中添加了一些代码行并提交了它。然后删除这些行的提交次数。

当添加的行和删除它们的后续提交的哈希时,我有提交哈希。如何找到删除它们的确切提交?

2 个答案:

答案 0 :(得分:3)

您可以使用-S-G选项git log。它们之间的区别在于-S采用固定的字符串(表示您想要匹配的代码行),而-G执行相同的操作,但采用正则表达式:

git log --oneline -S 'fixed string'
git log --oneline -G '^foobar$'

-S-G选项将返回首次引入或删除字符串/正则表达式模式的提交。如果要查看提交匹配的差异,您甚至可以添加--patch-p选项。

文档

来自official Linux Kernel git log documentation

-S <string>
     

查找引入或删除<string>实例的差异。请注意,这与简单地出现在diff输出中的字符串不同;有关详细信息,请参阅gitdiffcore(7)中的pickaxe条目。

-G <regex>
     

查找添加或删除的行与给定<regex>匹配的差异。

答案 1 :(得分:2)

您可能需要查看git-blameall。它显示了文件中存在的每一行,并包含删除行的提交。它对这种取证很有用。