Git 合并冲突,但应忽略文件
我有两个部门在工作,Git 合并冲突,但应忽略文件,git,gitignore,git-merge,Git,Gitignore,Git Merge,我有两个部门在工作,develope和staging。第一个用于开发,第二个用于部署,它基本上是测试部署上的开发代码,在测试部署中,我向数据库添加虚拟数据 我在develope分支中保留了一些图形设计文件,例如Adobe Photoshop文件。当然,我不需要也不希望它们出现在我的staging分支中,因此我将folling行添加到我的.gitignore文件中(它是一个子文件夹,包含所有这些文件): 通过对不需要的文件()执行以下命令,我已经从staging分支中删除了这些文件: 现在在dev
develope
和staging
。第一个用于开发,第二个用于部署,它基本上是测试部署上的开发代码,在测试部署中,我向数据库添加虚拟数据
我在develope
分支中保留了一些图形设计文件,例如Adobe Photoshop文件。当然,我不需要也不希望它们出现在我的staging
分支中,因此我将folling行添加到我的.gitignore
文件中(它是一个子文件夹,包含所有这些文件):
通过对不需要的文件()执行以下命令,我已经从staging
分支中删除了这些文件:
现在在develope
分支中,对/gfx\u material/
文件夹中的文件进行了修改。当尝试将develope
中的文件合并到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.
为什么??该文件(以及该文件夹中的其他文件)是否应被忽略?当您在
staging
分支上删除该文件时,似乎有人在develope
分支上对其进行了修改(这就是您在错误中看到的修改/删除
)。如果没有人碰过它,也没关系,但有人碰过,现在Git不知道该采取什么正确的行动
另外,您可能已经删除了
暂存
上的文件,但在开发时没有这样做。听起来您正试图将git用作部署工具,并希望从分支中去除不必要的工件。我建议不要这样使用Git。相反,您应该编写一个脚本来获取相关部分,并将它们部署到服务器上。以这种方式使用Git可能很好——因为它感觉很简单——但是你开始做一些事情,比如删除PSD文件,这会导致开发/合并方面的麻烦。是的,我确定我没有在develope
分支上删除它——我想保留它。但是我明白了,我不应该用git作为部署工具。。。但是,如果我在两个分支中都有不同的.gitignore
文件,这难道不应该完美地工作吗?不,它不应该。在develope分支中,这些文件仍在进行版本控制,因此Git仍将跟踪对它们的更改.gitignore
仅指定要忽略的未跟踪文件的类型。但是这些文件是被跟踪的,因此不会被忽略。问题在于你认为它们不重要并删除了它们,但团队的其他成员认为它们很重要并正在修改它们。那么Git应该如何解决这个问题呢?答案:提出一个冲突,让用户决定,这是它在做什么。谢谢你的详细回答!
git rm --cached
$ 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.