簡體   English   中英

GitFlow:安全地將開發更改合並到功能分支

[英]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是您合並developxyz代碼的分支,保持該分支穩定與developxyz各自的穩定點一致。 當您准備發布功能xyz或其中的一部分時,這也是您最終合並回開發的分支。

以上假設你不僅合並xyzxyz_stage ,但你也合並developxyz_stage不時和確保的部分xyz發布至今,以xyz_stage工作,並與從代碼通過相關測試,結合develop

盡管如此,您仍然需要選擇如何創建xyz分支,在該功能上工作,了解開發進度。

最干凈的選擇是 - 不要讓它意識到。 這就是為什么你有兩個開發流程匯集在一起​​的xyz_stage 只要xyz的開發沒有延長,這種方法是可行和合理的。

第二個選項是當您對暫存分支感到滿意時將xyz_stage合並回xyz 這樣你就可以獲得穩定的觀點,你可以繼續並在頂部開發xyz功能。

以下是該過程的簡單說明,並附有注釋:

功能xyz

使用git merge -s recursive -X ours 這將導致兩個分支中的沖突始終使用簽出目錄中的版本進行解析(在本例中為feature/xyz )。

重要提示 :與您的標題相反, 此策略不一定是“安全的” :來自develop的修改可能與feature/xyz的修改相沖突。 與往常一樣,請確保正確測試合並的更改。

根據我的經驗,唯一的“安全”解決方案是始終手動檢查和測試任何合並的結果。 --no-commit將進行合並,讓你在提交之前檢查它,或者你可以重置/修改,無論什么感覺更實用。 獲得三向合並工具非常有用。 在沒有合並沖突的情況下,有太多方法可以破解,依靠自動合並必然會讓你陷入困境。 如果你有100%的測試覆蓋率,當然,你可以更輕松一點,但有多少項目可以真正聲稱? ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM