曾几何时,一个坏人通过我们的GIT仓库从源代码中删除了一个常量。
到目前为止,没有人注意到这一点......直到现在。
但是我想弄清楚这个常数在哪个提交中消失了,坏人是谁。
我只知道FOOBAR
的常量名称。
更好的方法是git blame --reverse
?
答案 0 :(得分:16)
这将列出从任何文件添加或删除字符串FOOBAR的所有提交:
git log --all -p -SFOOBAR
答案 1 :(得分:0)
git log -- path/to/file/with/constant
这样的{p> git log应该可以获得所有曾经触及该文件的提交。如果文件没有经常更改,并且您的团队习惯于编写好的提交消息,那么这应该让您开始。
一旦你发现修改版本消失了,那么请你的罪犯。
如果文件确实发生很大变化,另一个选项是git bisect来搜索使用二进制搜索模式的违规提交。有点像:
$ git bisect start
$ git bisect bad
$ git bisect good <known-good-rev>
$ fgrep -Hn "FOOBAR" file
# Ah it is good!
$ git bisect good
$ fgrep -Hn "FOOBAR" file
# Ah it is bad!
$ git bisect bad
继续按照说明操作,直到找到引入错误的修订版。请阅读man page以获取更详细的说明。另一个很好的阅读资源是relevant section of Pro Git。
祝你好运。