如何进行Git合并操作忽略对两个分支进行的相同更改?

时间:2012-05-11 09:52:41

标签: git merge merge-conflict-resolution

让我们假设我们有一个开发分支'A'和两个子分支'B1'和'B2'(都取自A)。假设你在B1和B2的整个项目中运行格式代码命令(在我们的例子中是ReSharper的清理代码)。

现在,当我们尝试将B2合并到B1时,Git将报告项目中所有文件的冲突(在我们的例子中相当大)。当仔细观察每次冲突时,即使在B1和B2中都做出了完全相同的改变,Git认为这也是一场冲突(?)

如果B1和B2中的文件完全相同,是否有一种方法,自定义驱动程序/ git属性等会使Git合并操作不报告冲突?

也许我错了,也许它是一个空白/行结束问题(例如B1和B2中的不同行结尾),在这种情况下我可以在堆栈溢出时找到解决方案。

1 个答案:

答案 0 :(得分:2)

昨天我在与我的主分公司合并后的一个分支机构进行了大量的樱桃选择后,我遇到了类似的问题。很多冲突都有相同的变化。我用合并策略解决了这个问题:

git checkout main-branch
merge --no-commit -s recursive -X ours side-branch

你可以将“我们的”改为“他们的”。要小心,因为选择“我们的”或“他们的”方面会自动解决所有冲突。在我的情况下,由于这个原因,我很少有误合并,我手动修复。在此处查看其他有趣的合并策略选项:https://www.kernel.org/pub/software/scm/git/docs/git-merge.html

您也可以尝试使用rebase(在我的情况下,它不能很好地工作,因为分支太不同了,我在每个新的rebase交互中都有一个新的冲突)。请参阅:http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/