如何处理/修复git add/add冲突?

35

我不确定这个错误是何时发生的,在谷歌上也没有找到任何描述。

我的同事们在branch1上提交了一些新文件并更改了文件。然后我获取了这些更改,并将它们合并到了我的分支(branch2)中,但是没有使用git merge,而是手动使用Beyond Compare (我知道手动合并是不好的做法)。然后,在手动合并它们并将新文件复制粘贴到我的分支中后,我在branch2中提交了这些工作。然而,现在当他们尝试使用git merge origin/branch2从我的分支获取一些更改时,他们在最初添加的新文件上收到了很多git“add/add”冲突。

有人能告诉我为什么git将这些文件视为冲突,尽管它们是相同的吗?应该如何处理这些冲突?


2
Git的一个使用案例(Add/Add)冲突可能是文件模式的更改。在一个分支中受影响的文件可能具有与另一个分支不同的权限。 - Faisal Rehman
2个回答

50

您会遇到 CONFLICT (add/add): Merge conflict in ... 冲突,因为这些文件实际上并不相同。您可以使用diff命令查看差异,例如:

git diff branch1 branch2 -- path/to/file

其中branch1branch2是您要比较的分支名称。

或者,在冲突状态下,可以更简单地查看差异。在git merge失败后,您可以直接运行不带参数的git diff命令,它将显示冲突的区域。

要解决这样的冲突,您必须决定哪个分支具有正确的内容。您可以通过从适当的分支签出文件来实现这一点,例如:

git checkout name_of_branch path/to/file

有时候正确的内容是两个文件的混合。在这种情况下,您必须手动解决,可能需要使用git diff命令研究差异,就像上面的示例一样。

长期解决方案是避免在不同分支中对相同路径进行冲突更改,这通常是协作者之间任务共享/沟通问题。


1
谢谢 @AndreasFester,我在最近的 Git 版本中也看到了同样的问题。现在我已经改进了我的帖子。 - janos

9

我遇到了一个git(添加/添加)冲突。Janos提供的信息为解决问题提供了洞见。文件“看起来”相同,但是我的冲突文件夹在一个分支上以664的权限添加,在另一个分支上以755的权限添加。使用git status揭示了文件之间的差异。

解决冲突所采取的步骤

git merge --abort
rm -rfv myconflictedfolder
git commit -m'Resolve git Add/Add branch merge conflict by deleting conflicted folder and files in myconflictedfolder'
git merge mybranch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接