[英]GitFlow: safely merge develop changes to a feature branch
最近我開始研究一個很棒的功能,所以我創建了一個新feature/xyz
分支。 問題是這個功能很大,所以我需要3個月才能完成它。 我想安全地合並已經取得進展develop
到我的特性分支,而無需擔心從變化develop
的分支將覆蓋我已經在我的特性分支進行的更新。 我之前嘗試將develop
合並到feature/xyz
嘗試最終導致了我在已恢復的新功能中所做的一些更改。
實現這一目標的命令是什么? 謝謝
只有你了解develop
代碼和feature/xyz
對齊,沒有其他人。 只有你才能以敏銳的方式正確地合並這兩個流程。 即使使用默認的合並策略,這些策略遠不如-S ours
或-X theirs
危險,你仍然需要檢查結果。
當然,你可能需要一些幫助,git會提供一些幫助。 例如,您可以使用git記錄的分辨率 - rerere來幫助您在最初創建一個之后做出相同的正確合並決策。
一個相當普遍且相對簡單的模型,使用您為分支提供的名稱,可能對您有用,
develop
是發展主要develop
的分支 xyz
是您開發xyz特征的分支 xyz_stage
是您合並develop
和xyz
代碼的分支,保持該分支穩定與develop
和xyz
各自的穩定點一致。 當您准備發布功能xyz或其中的一部分時,這也是您最終合並回開發的分支。 以上假設你不僅合並xyz
到xyz_stage
,但你也合並develop
成xyz_stage
不時和確保的部分xyz
發布至今,以xyz_stage
工作,並與從代碼通過相關測試,結合develop
。
盡管如此,您仍然需要選擇如何創建xyz
分支,在該功能上工作,了解開發進度。
最干凈的選擇是 - 不要讓它意識到。 這就是為什么你有兩個開發流程匯集在一起的xyz_stage
。 只要xyz
的開發沒有延長,這種方法是可行和合理的。
第二個選項是當您對暫存分支感到滿意時將xyz_stage
合並回xyz
。 這樣你就可以獲得穩定的觀點,你可以繼續並在頂部開發xyz
功能。
以下是該過程的簡單說明,並附有注釋:
使用git merge -s recursive -X ours
。 這將導致兩個分支中的沖突始終使用簽出目錄中的版本進行解析(在本例中為feature/xyz
)。
重要提示 :與您的標題相反, 此策略不一定是“安全的” :來自develop
的修改可能與feature/xyz
的修改相沖突。 與往常一樣,請確保正確測試合並的更改。
根據我的經驗,唯一的“安全”解決方案是始終手動檢查和測試任何合並的結果。 --no-commit將進行合並,讓你在提交之前檢查它,或者你可以重置/修改,無論什么感覺更實用。 獲得三向合並工具非常有用。 在沒有合並沖突的情況下,有太多方法可以破解,依靠自動合並必然會讓你陷入困境。 如果你有100%的測試覆蓋率,當然,你可以更輕松一點,但有多少項目可以真正聲稱? ;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.