曾幾何時,一個壞人從源代碼中刪除了一個常量,通過我們的GIT repo。如何在git中找到'lost'代碼
沒有人注意到這一點loooong時間....直到現在。
然而,我想知道這個常數是在哪個提交中消失了,誰是壞人。
我只知道它的名字是FOOBAR
。
作爲git blame --reverse
的一些更好的方法?
曾幾何時,一個壞人從源代碼中刪除了一個常量,通過我們的GIT repo。如何在git中找到'lost'代碼
沒有人注意到這一點loooong時間....直到現在。
然而,我想知道這個常數是在哪個提交中消失了,誰是壞人。
我只知道它的名字是FOOBAR
。
作爲git blame --reverse
的一些更好的方法?
git log像git 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。
祝你好運。
誰是壞人? – Dennis 2016-07-08 19:02:45