我需要知道谁以及何时使用git删除了源文件的某些部分。不幸的是,git指责似乎不会直接向我表明这一点,因为在当前的修订版中,文件中完全没有上述部分。有什么建议吗?
您可以在具有特定字符串的行中找到更改某些内容的提交。这样你就可以看到哪个提交删除了某行,如果你知道它的内容是
git log -S <string> path/to/file
为了找到这些行是如何写的,你可以在一些非常旧的提交中看到你的文件:
git show old-commit-hash^:src/path/to/file
这里有几个选项:
- 使用
git log
的-G
选项来查找添加或删除的提交,其中一行与已删除的代码匹配:
其中指定的字符串也可以是正则表达式git log -G"code that was deleted"
- 使用具有行范围的
-L
选项可以查找修改这些行的提交:
将列出在git log -L10,20:path/to/file
path/to/file
中的10
和20
行之间修改代码的提交 - 使用带有已删除函数名称的
-L
选项:
将列出修改CCD_ 9中CCD_ 8函数的提交git log -Lfoo:path/to/file
一旦您知道删除该代码的提交,您就可以很容易地确定作者。