Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 合并冲突,但应忽略文件_Git_Gitignore_Git Merge - Fatal编程技术网

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.