合并冲突虽然文件应该被忽略

时间:2013-10-21 14:19:01

标签: git gitignore git-merge

我有两个分支机构,developstaging。第一个用于开发目的,第二个用于部署,它基本上是测试部署中的开发代码,我将虚拟数据添加到数据库。

我在develop分支中保留了一些来自图形设计的文件,例如Adobe Photoshop文件。当然我在staging分支中不需要或不需要它们,所以我将后续行添加到我的.gitignore文件中(它是包含所有这些文件的子文件夹):

...
/gfx_material/

我通过对不需要的文件(found in this answer)执行以下命令,从staging分支中删除了文件:

git rm --cached

现在在develop分支中,对/gfx_material/文件夹中的文件进行了修改。在尝试将develop中的文件合并到staging时,我收到错误:

$ git merge develop
CONFLICT (modify/delete): gfx_material/path/file.psd deleted in HEAD and
modified in develop. Version develop of gfx_material/path/file.psd left in tree.
Automatic merge failed; fix conflicts and then commit the result.

为什么呢?该文件(以及该文件夹中的其他文件)不应该被忽略吗?

1 个答案:

答案 0 :(得分:1)

当您在staging分支上删除它时,有人在develop分支上修改了它(这是您在错误中看到的modify/delete)。如果没有人碰过它,那就没事了,但有人做了,现在Git不知道采取的正确行动。

此外,您可能已删除staging上的文件,但未在开发时完成。听起来你正在尝试使用git作为部署工具,并希望从分支中删除不必要的工件。我建议不要这样使用Git。相反,您应该将脚本放在一起以获取相关部分,并将它们部署到您的服务器上。以这种方式使用Git可能会很好 - 因为它感觉很简单 - 但是你开始做一些事情,比如删除导致开发/合并头痛的PSD文件。