簡體   English   中英

合並時藏匿

[英]Stashing while merging

我有一個問題剛剛提出我的同事,我想知道這個問題最好的git工作流程。

假設我們有兩個分支A和B.現在我們在A和B中都改變了一些文件( foo.c ),所以當我們將B合並到A時,我們會遇到合並沖突。現在讓我們說一些開發人員搞砸了並離開了分支A處於損壞狀態,錯誤也在foo.c中,但是在未合並的行中。

我看到了處理這種情況的一些可能性:

  1. 存儲掛起的合並,修復A上的問題,提交然后再次應用合並。 但是在這一點上,我不確定如何為foo.c所做的更改處理正確的合並策略。 破碎的部分可能會影響我所做的一些事情,因此我沒有看到解決沖突的明確方法。

  2. 撤消合並,修復A上的問題,然后重做整個合並。 但是我可能已經解決了其他沖突,所以這可能會失去很多工作。

  3. 拿--theirs / - 我們的文件版本,完成合並,修改更改,櫻桃選擇已經丟失的更改。 然而,我會有兩次變化。

  4. 其他一些解決方案,我無法想到。

所有這些解決方案讓我感到有些不滿意。 根據我的慣常經驗,我可能會選擇1,但我絕對不確定。

你會如何處理這種情況?

您無法隱藏未提交的合並。 選項1立即不在列表中。

在清潔歷史方面,選項2的變化是最好的。 Git有能力記住沖突解決方案; 它只是默認禁用。 你可以啟用它: git config --global rerere.enabled 根據需要解決沖突。 通常你會提交合並,Git會記錄你解決沖突的方式。 由於您實際上並不想提交合並,因此您可以運行git rerere以立即記錄沖突解決方案而無需提交。 (或者,如果你繼續並提交了合並,你可以git reset --hard HEAD^ ,重置到它之前。沖突解決仍然會被記住。)

然后,您可以在分支A中修復問題,並重做合並。 Git會重新使用重新有線沖突解決方案。 它仍將被標記為未合並,因此您有機會查看它並確保它做正確的事情,然后在未合並的路徑上運行git add並提交合並。

實際上,我對選項3不清楚。 你為什么要挑選? 聽起來foo.c只在分支A中被破壞,這是你要合並的分支,所以這一切都在分支A中。所需的歷史是錯誤修正,然后是合並; 如果您改為繼續合並然后解決問題,那么您只需要切換兩次提交的順序。 在任何情況下,都沒有必要重復提交 - 如果你澄清,我可以幫助避免這種情況!

暫無
暫無

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

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