2012-08-16 52 views
5

我的Git倉庫有兩個文件,alphabeta,具有相同的內容。重訂的Git合併後的困惑刪除的文件

如果我刪除我的主分支alpha,在我的特性分支進行編輯,然後當我合併掌握到的功能,我警告過沖突。假設我通過刪除alpha來解決此問題。

如果我再使用git rebase master衍合我的特性分支上的主人,alpha被刪除,但現在我要alpha就這一特性分支的更改應用到beta!我收到了衝突警告,但它很高興地通過自動合併解決,但未提交被阻止供我審閱。

有趣的是,如果我做了git rebase -i並且只接受默認值,beta不會被編輯,我可以解決我在合併時解決的相同衝突。

三個相關的問題,那麼:

  1. 爲什麼混帳認爲我申請到一個文件中的變化應適用於另一個,當其他沒有被任何提交編輯?
  2. 我該如何避免這種情況?
  3. 即使我採用默認選項,爲什麼交互式底座的行爲會有所不同?

我Win7上運行的Git 1.7.9在Cygwin。我已經把transcript on pastebin顯示該開始用git init一個空目錄,如果任何人希望看到的細節爲自己(我不是在這裏張貼由於長度)。

回答

10

documentation for git-rebase

-m
--merge
使用融合策略,以變基。當使用遞歸(默認)合併策略時,這允許rebase知道上游端的重命名。

當一個文件被刪除,Git會認爲,在改名的候選人,並試圖重訂基期的補丁應用到相應的重命名的文件。這聽起來似乎可能會對你的情況做出猜測。

可以使用-m選項來選擇不同的合併策略。例如,resolve合併策略可以通過自動檢測重命名來避免此問題(有關合並策略的詳細信息,請參閱git-merge)。

+1

另一種可能的解決辦法是用'recursive'戰略的'重命名,threshold'選項玩。將其設置爲「M100%」,應該用錯誤的猜測來解決問題。 – 2013-04-10 00:19:37

+0

謝謝@GabrielePetronella。這爲我解決了它 – thehouse 2016-01-04 11:01:49