我有两个分支机构,develop
和staging
。第一个用于开发目的,第二个用于部署,它基本上是测试部署中的开发代码,我将虚拟数据添加到数据库。
我在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.
为什么呢?该文件(以及该文件夹中的其他文件)不应该被忽略吗?
答案 0 :(得分:1)
当您在staging
分支上删除它时,有人在develop
分支上修改了它(这是您在错误中看到的modify/delete
)。如果没有人碰过它,那就没事了,但有人做了,现在Git不知道采取的正确行动。
此外,您可能已删除staging
上的文件,但未在开发时完成。听起来你正在尝试使用git作为部署工具,并希望从分支中删除不必要的工件。我建议不要这样使用Git。相反,您应该将脚本放在一起以获取相关部分,并将它们部署到您的服务器上。以这种方式使用Git可能会很好 - 因为它感觉很简单 - 但是你开始做一些事情,比如删除导致开发/合并头痛的PSD文件。