![](/img/trans.png)
[英]Pull the latest update without stashing the current changes or merging the changes in the file
[英]Stashing while merging
我有一個問題剛剛提出我的同事,我想知道這個問題最好的git工作流程。
假設我們有兩個分支A和B.現在我們在A和B中都改變了一些文件( foo.c
),所以當我們將B合並到A時,我們會遇到合並沖突。現在讓我們說一些開發人員搞砸了並離開了分支A處於損壞狀態,錯誤也在foo.c中,但是在未合並的行中。
我看到了處理這種情況的一些可能性:
存儲掛起的合並,修復A上的問題,提交然后再次應用合並。 但是在這一點上,我不確定如何為foo.c所做的更改處理正確的合並策略。 破碎的部分可能會影響我所做的一些事情,因此我沒有看到解決沖突的明確方法。
撤消合並,修復A上的問題,然后重做整個合並。 但是我可能已經解決了其他沖突,所以這可能會失去很多工作。
拿--theirs / - 我們的文件版本,完成合並,修改更改,櫻桃選擇已經丟失的更改。 然而,我會有兩次變化。
其他一些解決方案,我無法想到。
所有這些解決方案讓我感到有些不滿意。 根據我的慣常經驗,我可能會選擇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.