2016-12-10 57 views
2

我有2個分支A和BGit的合併:合併文件有不同的文件

在分支A I改名Thing.java到ThingImpl.java,並改寫了Thing.java以便它現在的界面。我還向ThingImpl.java添加了很多內容。

在分支BI編輯類Thing.java

現在我想從一個分支我的更改合併到分支B,和它試圖我更改合併到界面Thing.java,而不是應用對ThingImpl.java的差異,這是它應該做的。有沒有辦法告訴git做到這一點?

回答

1

這取決於這些文件的內容以及它們已經改變了多少。

您可以指示混帳合併檢測更難重命名,具有:

git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change A 

-Xrename-threshold=15將是爲了控制15%的相似性已經足夠考慮兩個文件重命名候選人。

但是,這不會涵蓋每個用例,如「git fails to detect renaming」和「git merge with renamed files」中所示。

+0

它沒有爲我工作。我猜Thing.java在兩個分支都被編輯得太多了。 – ario

+0

正確:如果內容太不同,git將不會檢測到重命名。 – VonC

+1

我認爲它不起作用,因爲現在兩個分支中都有一個Thing.java文件,甚至不會發生重命名檢測。 – j6t

0

我想有沒有辦法告訴Git的文件歷史記錄圖形看起來完全像什麼,因爲它依賴於自身的差異: Getting Git to follow renamed and edited files

我也許應該單獨進行更改致力於ThingImpl.java的重命名分支A的ThingImpl.java,以避免此問題。我不得不手動合併。

1

當您將分支A合併到分支B時,預期的結果是存在與分支A中的版本相同的Thing.java文件和分支中基本相同的ThingImpl.java文件A,但對分支B所做的更改進行了整合。

最簡單的是這樣的:

git checkout branch_B 
git mv Thing.java ThingImpl.java 
git commit -m "A technical change to make the upcoming merge possible." 
git merge branch_A 

現在,如果你的構建失敗的輔助後提交,並在合併之前,你可以修改構建你不依賴於重命名檢測踢

。考慮重命名文件的過程。