我有2个分支A和BGit的合并:合并文件有不同的文件
在分支A I改名Thing.java到ThingImpl.java,并改写了Thing.java以便它现在的界面。我还向ThingImpl.java添加了很多内容。
在分支BI编辑类Thing.java
现在我想从一个分支我的更改合并到分支B,和它试图我更改合并到界面Thing.java,而不是应用对ThingImpl.java的差异,这是它应该做的。有没有办法告诉git做到这一点?
我有2个分支A和BGit的合并:合并文件有不同的文件
在分支A I改名Thing.java到ThingImpl.java,并改写了Thing.java以便它现在的界面。我还向ThingImpl.java添加了很多内容。
在分支BI编辑类Thing.java
现在我想从一个分支我的更改合并到分支B,和它试图我更改合并到界面Thing.java,而不是应用对ThingImpl.java的差异,这是它应该做的。有没有办法告诉git做到这一点?
这取决于这些文件的内容以及它们已经改变了多少。
您可以指示混帐合并检测更难重命名,具有:
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”中所示。
我想有没有办法告诉Git的文件历史记录图形看起来完全像什么,因为它依赖于自身的差异: Getting Git to follow renamed and edited files
我也许应该单独进行更改致力于ThingImpl.java的重命名分支A的ThingImpl.java,以避免此问题。我不得不手动合并。
当您将分支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
现在,如果你的构建失败的辅助后提交,并在合并之前,你可以修改构建你不依赖于重命名检测踢
。考虑重命名文件的过程。
它没有为我工作。我猜Thing.java在两个分支都被编辑得太多了。 – ario
正确:如果内容太不同,git将不会检测到重命名。 – VonC
我认为它不起作用,因为现在两个分支中都有一个Thing.java文件,甚至不会发生重命名检测。 – j6t