2015-10-20 110 views
1

我的分支(B)繼承自主(M)。由於時間已過,M和B已經發散,但B僅修改樹中的專用文件夾(f)。git rebase。我寧願擁有主區域的太多衝突

目標是保持B與M同步我明白它需要解決文件夾(f)中的衝突,但是有沒有一種方法可以簡化這種情況,對於不是f的任何東西,總是使用master重新貼牌?

我兜兜轉轉試圖解決的,我絕對沒有修改,並會想喝酒M.

提示的內容的文件夾衝突?

+0

它有助於與rebase走相反的路?或者爲什麼不把M合併到B中,這應該帶來所有的M變化,除了你有衝突的f之外呢? –

+0

您不應該在沒有更改的文件中發生衝突。難道那位大師是被其他人用力推動的?另一種選擇是你在'f'之外有一些未跟蹤的文件,並且master創建它們。 – max630

回答

0

對於不在目錄(文件夾)f中的文件,您想要的是相當於-s theirs。不幸的是,git首先沒有-s theirs,更不用說可以限制爲f

然而,所有的東西都不會丟失,並且有點工作(例如shell腳本),您可以自動執行大部分操作,因爲git 確實有git checkout

雖然重新綁定(即櫻桃採摘承諾將它們複製到新的基礎上),但每當git因衝突而停止時,對於任何有衝突的<path>,您都可以簡單地使用git checkout <rev> -- <path>。選擇對應於其文件版本的<rev>(由於rebase反轉視角的方式,它只是HEAD版本;或者您可以使用:2:<path>,儘管我自己並沒有嘗試過)。這相當於使用-s theirs(如果存在),因爲它使用它們的文件版本填充索引條目。這意味着你甚至不需要git add的結果:它只是解決衝突。

請確保您的不要將此應用於您的目錄f中的任何<path>當然。根據需要手動解決這些問題。

完成之後,恢復rebase並讓git完成它的工作,直到你遇到下一個櫻桃挑選衝突。