我的目標是使用git bisect。我被一個事實所困擾,顯然接近提交的問題,我試圖糾正,我介紹了另一個小錯誤,呈現一些鄰居提交無法測試。git:使用rebase -i重播(大部分)歷史記錄,保持分支和合並結構不變
第二個錯誤是一個微不足道的錯誤。我稍後更正了幾個提交。
我想做到這一點:
git checkout master
git checkout -b fully-testable-branch
git rebase -i initial-good-bisect-point
,然後取出承諾,從提交的列表介紹了第二個錯誤。我希望並準備好處理代碼和歷史領域的一些衝突。然後,如果一切順利(並且它應該 - 這個項目中的大多數提交都是可測試的),我可以再次平分,這次在完全可測試分支的頂端和初始好分叉點之間,點,找到並研究問題提交,結帳主,然後從那裏開始。
如果歷史記錄是線性的,這將工作正常。 (我之前做過)。然而,git rebase -i做的是線性化非線性歷史。反過來,這又產生了很多已經解決的衝突(往往不是我,往往是我在其他機器上,所以我的rerere緩存沒有太大的幫助)。這些衝突是我的計劃的一部分,既不涉及我想要明確的錯誤,也不涉及我確定的未成年人。
我不是很激動要重新解決這些衝突。這項工作第一次非常乏味且容易出錯!
那麼,有沒有辦法讓git rebase -i重放歷史包括分支和合並?還有其他的命令嗎?我是否全都錯了,如果是這樣,我應該怎麼試試?
編輯:根據要求,這是歷史的簡化版本。
A-B-C-D-E--F-G-H-I-J-R-S-T
\ /
\ /
α-N-M---P---
\ /
β /
\/
γ
有報道說,分別爲P解決的衝突,並在D處創建小錯誤該歷史被壓平成:
A-B'-C'-D'-E'-F'-α'-β'-γ'-N'-M'-P'-F'-G'-H'-I'-J'-Z'
當如此重放歷史,有在N個衝突」, M'和P'。
很多文字 - 但我仍然不確定我是否理解你的最終目標。也許你可以展示一些示例提交圖,說明你現在擁有什麼以及最後想要擁有什麼,在對分之後。 –
你可以使用'git bisect skip'來忽略提交時提交的提交嗎? – loganfsmyth
@loganfsmyth你可以,但如果你這樣做,你最終可能會得到一個不精確的答案:git bisect告訴我,破壞的提交是列表中的一個。 –