2010-10-22 37 views
4

我有一個擁有主分支和穩定分支的項目 - 分支早已分歧。現在我在stable分支上有了一些提交,我也希望在master分支上有一個bug(一個bug修復)。我無法合併,因爲分支發散,有大量未合併的更改 - 我只想要4次提交。對分散的GIT分支應用相同的更改

所以我嘗試櫻桃採摘。但是,由於頂級模塊名稱從「項目模塊」方案更改爲「模塊」,因此失敗。當採摘櫻桃時,GIT在舊目錄中創建新文件(如在舊分支上):未檢測到重命名。這可能是因爲我得到這樣的警告:

warning: too many files (created: 278 deleted: 5364), skipping inexact rename detection 

我嘗試git的格式補丁+ git am的,但是這一次會在舊目錄中的文件。

如何將提交應用到主分支?

感謝, 亞當

回答

3

我懷疑你可以把它的工作(但需要較長時間)通過改變merge.renameLimit值:

merge.renameLimit

文件的數量在合併期間考慮何時執行重命名檢測;如果未指定,則默認爲diff.renameLimit的值。

我相當肯定櫻桃挑選也會尊重這個價值。如果沒有,可以找到兩個分支的共同祖先,在那裏應用提交,然後將它們合併到兩個分支中,以確保它使用合併機器。 (請注意,這實際上是我首先推薦的做法,合併比挑選櫻桃更合適,因爲它們不會創建重複的提交,並且它們保留歷史流。)

+0

我停止得到錯誤,但是櫻桃挑選仍舊創建舊分支中的目錄,而不是修補新分支中的文件。 我想我需要一種方法來應用一些提交,做一些路徑轉換......除了git format-patch +舊的UNIX補丁-n之外的任何其他方式? 感謝您與共同的祖先提示,我會在下次嘗試。雖然在這裏我合併了一個拉取請求,所以我沒有太多的控制權什麼是父... – adamw 2010-10-22 13:25:30

+0

嗯,是的,我可能會回到「手動」(即'sed')補丁編輯。你應該仍然使用'git apply',而不是'patch'。它支持git對補丁格式所做的所有擴展。 – Cascabel 2010-10-22 13:58:22

+0

@adamw:我只是注意到在git.git中提交:[merge-recursive:選項來指定重命名閾值](http://git.kernel.org/?p=git​​/git.git;a=commit; h = 10ae7526bebb505ddddba01f76ec97d5f7b5e0e5) - 有可能你的文件不在閾值範圍內,你可以通過使它更加寬鬆地按你想要的方式工作。 (假設你還沒有手動完成)。 – Cascabel 2010-10-27 14:14:57