2013-05-28 35 views
4

我試圖在我們的代碼庫中找到一個錯誤的來源。我有一個我懷疑導致破壞的提交SHA,但我也知道該錯誤開始出現的日期。我想檢查給定提交何時合併到我們的主分支中。如何判斷給定提交何時進入分支?

有沒有簡單的方法來做到這一點?

回答

2
git branch --contains SHA1 

應該打印出包含給定提交的所有分支。

1

你可以找到犯罪嫌疑人提交基於一個日期:

git log --before=<date> -n 1 

這,或一些帶有日期一兩天,可能是您的git bisect「好」的起點。

+0

我認爲這個答案是迄今爲止最好的。OP並沒有要求提交*引入了已知的錯誤 - 但是當這個提交成爲特定分支歷史的一部分時。這與'git branch --contains'結合作爲git-bisect的「測試」可以做到。但是,這是否也有一個git單線程呢? – gcbenison

0

我假設你的主分支是master,而你懷疑的SHA是$SHA

首先,找到合併提交了在master但不是在$SHA的歷史:

$ git log --merges --oneline $SHA..master 

然後,測試每一種合併提交,以確定哪一個包含$SHA。我們假設一個給定的合併提交ID在$MERGE。您可以通過此提交列出所有已合併到master中的提交,其中包括git log --oneline $MERGE^..$MERGE

(這工作,因爲$MERGE^$MERGE的(第一)的父母,即master在合併之前的快照,因此$MERGE^..$MERGE被列出在$MERGE的提交而不是在$MERGE^,即$MERGE的提交而不是在master前你可以grep爲目標$SHA合併)

然後:

$ git log --oneline $MERGE^..$MERGE | grep ^$SHA 

第一合併提交該得到任何出過去grep是你的贏家。一旦你確定了提交,你可以git show它的更多信息。

$ git show $MERGE 

如果有人知道這個,我會對更簡單的方法感興趣。

相關問題