2010-11-22 166 views
8

曾幾何時,一個壞人從源代碼中刪除了一個常量,通過我們的GIT repo。如何在git中找到'lost'代碼

沒有人注意到這一點loooong時間....直到現在。

然而,我想知道這個常數是在哪個提交中消失了,誰是壞人。

我只知道它的名字是FOOBAR

作爲git blame --reverse的一些更好的方法?

+0

誰是壞人? – Dennis 2016-07-08 19:02:45

回答

15

這將列出添加或從任意文件中刪除該字符串FOOBAR所有提交:

+0

致命:無法識別的論點:--patch – astropanic 2010-11-22 16:28:26

0

git loggit log -- path/to/file/with/constant應該讓你所有曾經觸及該文件的提交。如果文件沒有經常更改,並且您的團隊習慣於編寫好的提交消息,那麼應該讓您開始。

一旦你找到它消失的版本,那麼你就有了你的罪犯。

另一種選擇是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

祝你好運。