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

如何使Git合并操作忽略对两个分支所做的相同更改?,git,merge,merge-conflict-resolution,Git,Merge,Merge Conflict Resolution,假设我们有一个开发分支“A”,两个分支“B1”和“B2”(都取自A)。假设您在B1和B2中对整个项目运行一个格式化代码命令(在本例中是ReSharper的清理代码) 现在,当我们尝试将B2合并到B1中时,Git将报告项目中所有文件的冲突(在我们的例子中,这是一个相当大的数字)。当仔细观察每个冲突时,Git似乎认为存在冲突,即使B1和B2中都做了完全相同的更改(?) 如果B1和B2中的文件完全相同,是否有一种方法(自定义驱动程序/git属性等)可以使git合并操作不报告冲突 可能是我弄错了,可能是

假设我们有一个开发分支“A”,两个分支“B1”和“B2”(都取自A)。假设您在B1和B2中对整个项目运行一个格式化代码命令(在本例中是ReSharper的清理代码)

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

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


可能是我弄错了,可能是空格/行尾问题(如B1和B2中的不同行尾),在这种情况下,我可以在堆栈溢出问题上找到解决方案。

昨天,我在与主分支合并后的一个分支上进行了大量的切磋之后,遇到了类似的问题。许多冲突与相同的变化。我用合并策略解决了这个问题:

git checkout main-branch
merge --no-commit -s recursive -X ours side-branch
你可以把“我们的”改成“他们的”。要小心,因为选择“我们”或“他们”的一方会自动解决所有冲突。在我的情况下,我有一些错误的合并,由于这一点,我手动修复。在此处查看其他有趣的合并策略选项:


您还可以尝试使用一个重基(在我的例子中,它没有很好地工作,因为分支太不同了,我在每个新的重基交互中都有一个新的冲突)。请参见:

您可以通过在编辑器中打开文件来检查冲突,您将能够了解git为什么会看到冲突显示除了在这些分支中执行重构之外还有很多工作要做?我不能具体地为Git说话,但一般来说,您只需要在一个分支中执行此操作,将更改合并到父级,然后让第二个分支进行重构。您是否尝试在Git中使用kdiff3作为合并工具?它通常可以自己处理这些琐碎的冲突。@EmilB,我有一个隐秘的怀疑,您将不得不权衡一个分支获胜、然后刷新或手动将所有这些文件合并为一个大型合并活动的成本/收益。如果两个分支之间的实际更改不是很多,那么最好使用第一个选项。此问题解释了如何合并忽略空格: