我有興趣在git中找到一個提交,通過標識刪除了一行,其中最早的提交沒有包含它。獲取第一次提交,其中沒有包含在git中的行
我知道git blame --reverse
命令,但它顯示了最後一次提交包括這一行,它不一樣。我試着用它與git log --reverse --ancestry-path <commit shown by blame>..HEAD
相結合來找到我需要的提交併取得了一些成功,但在某些情況下它變得乏味。
說我有下面的圖
/----G---H---I
/ \ \ \
A----B---C---D---F--G
\/
X
我知道,一個包含線,但G不。實際上刪除它的提交是X.但是,如果我運行git blame --reverse A..G
,它會告訴我該行最後一次提交是I.通過執行git log --reverse --ancestry-path I..G
,我將看到F是合併,因此我需要深入挖掘運行git blame --reverse A..D
,這將返回H.然後我會找到G,只有最後A,這將允許我找到X.
這不是一個不太可能的情況,當我們有很多拉請求在相似的時間合併到主分支中,所有分支的提交仍包含已刪除的代碼。
是否有命令會立即返回提交X?或者至少有更快的方法找到它?
可能重複[如何「git責備」刪除的行?](http://stackoverflow.com/questions/4404444/how-do-i-git-blame-a-deleted-line) – smarber