G---H // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
根據我們對項目的特殊需求,上述情況發生的情況非常普遍。我們有一些提交的主/開發分支。然後我們得到一個錯誤報告,並開始修復錯誤分支(提交上面的C和D)。同時在開發分支中發生更多的提交。接下來我們被告知我們需要爲客戶創建一個發佈版本,其中不能包含上面提交的B,E和F提交的更改,但它應該包含錯誤修復。Git:僅合併分支所做的更改
因此,在更改B應用之前,我們分支了dev,但是在這個版本分支中修復bug的最佳方法是什麼?如果我執行分支合併,它將包含B中所做的更改,這是我不想要的。我可以執行提交C和d的摘櫻桃,但我讀了櫻桃採摘並不總是一個好主意based on this answer主要是因爲我的回購會再看看這樣的:
G---H---C'---D'--- // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
所以C「和d」顯示爲完全新的提交與不同的sha-1 ID作爲C和D.這真的是一件壞事嗎?這會導致什麼問題?是否有更好的方式將錯誤修復分支中的更改導入發佈分支?
如果我將發佈分支合併回主版本,會有什麼危險?在我所做的圖中,改變H最終需要被應用回主分支。 – DaveJohnston
好吧,如果您不將錯誤修復分支合併到主服務器中,則沒有問題。如果你這樣做了,你可能會得到比你更多的衝突(如果兩個分支以相同的方式修改代碼的這些部分,並在其上添加一些不同的更改)。 「危險」是多餘的,真的......這意味着你必須手動修復一堆衝突,並且這兩個提交會在你的歷史記錄中顯示兩次(使用不同的提交ID)。 –