Git合并:将文件与其他文件合并
我有两个分支A和B 在分支A中,我将Thing.java重命名为ThingImpl.java,并重写Thing.java,使其成为一个接口。我还向ThingImpl.java添加了很多内容 在分支B中,我在Thing.java中编辑了这个类Git合并:将文件与其他文件合并,git,git-merge,Git,Git Merge,我有两个分支A和B 在分支A中,我将Thing.java重命名为ThingImpl.java,并重写Thing.java,使其成为一个接口。我还向ThingImpl.java添加了很多内容 在分支B中,我在Thing.java中编辑了这个类 现在我尝试将分支A中的更改合并到分支B中,它尝试将我的更改合并到接口Thing.java中,而不是将diff应用到ThingImpl.java中,这正是它应该做的。有没有办法告诉git这样做?这取决于这些文件的内容以及它们的更改程度 您可以指示git mer
现在我尝试将分支A中的更改合并到分支B中,它尝试将我的更改合并到接口Thing.java中,而不是将diff应用到ThingImpl.java中,这正是它应该做的。有没有办法告诉git这样做?这取决于这些文件的内容以及它们的更改程度 您可以指示git merge检测更难的重命名,方法是:
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change A
<代码> -xReNeNealSt==15 < /代码>将是为了控制15%的相似性已经足够考虑两个文件重命名候选。
但这并不能涵盖所有用例,如“”和“”中所示。我想无法确切地告诉Git文件历史图是什么样子,因为它依赖于自己的差异: 为了避免这个问题,我可能应该在分支A中分别提交ThingImpl.java的重命名和ThingImpl.java的更改
实际上,我必须手动合并。当您将分支A合并到分支B中时,预期的结果是有一个文件Thing.java,它与分支A中的版本相同,还有一个文件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在这两个分支中都被编辑得太多了。确切地说:如果内容太不同,git不会检测到重命名。我认为它不起作用,因为现在两个分支中都有一个文件Thing.java,而且重命名检测甚至不会发生。