33

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

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

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

4

2 回答 2

47

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

git diff branch1 branch2 -- path/to/file

wherebranch1branch2是您要比较的分支的名称。

git merge或者,一种更简单的查看差异的方法,当你处于冲突状态时,在失败后,你可以简单地git diff不带参数运行,它会显示冲突区域。

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

git checkout name_of_branch path/to/file

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

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

于 2013-10-20T08:49:29.570 回答
8

我有一个 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
于 2013-12-17T05:45:01.647 回答