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

nic*_*ine 4 git

我向存储库添加了一些代码行并提交了它。然后这些行之后的提交数已被删除。

我有添加行时的提交哈希值以及删除它们的后续提交的哈希值。我怎样才能找到它们被删除的确切提交?

小智 5

您可以使用-S或-G选项git log。它们之间的区别在于,前者-S采用固定字符串(代表要匹配的代码行),而后者则-G做同样的事情,但采用正则表达式:

git log --oneline -S 'fixed string'
git log --oneline -G '^foobar$'
Run Code Online (Sandbox Code Playgroud)

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

文档

来自官方 Linux 内核git log文档:

-S <string>
Run Code Online (Sandbox Code Playgroud)

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

-G <regex>
Run Code Online (Sandbox Code Playgroud)

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