由于冲突,Git合并失败


Git merge failing due to conflicts

本问题已经有最佳答案,请猛点这里访问。

我是Git的新手,当我尝试将一个分支合并到另一个分支时,我会遇到很多错误,比如:

1
2
3
CONFLICT (modify/delete): src/controller/app.js deleted in feat_branch and modified in HEAD. Version HEAD of src/controller/app.js left in tree.
CONFLICT (modify/delete): src/controller/service.js deleted in feat_branch and modified in HEAD. Version HEAD of src/controller/service.js left in tree.
...

我试图用这个命令合并git merge feat_branch --no-ff

我做错了什么?为什么会产生这些错误?


这些不是错误。它们是合并冲突(注意,Git本身在这里不使用"错误"一词,而是使用"冲突")。

这是一个重要的区别:在Git中冲突是正常的和无害的。它们意味着为你工作,但不是问题。Git非常擅长将冲突保持在尽可能小的范围内(与某些旧版本的控制系统相反),并且通常对其消息非常明确和有用。

在这种情况下,冲突正是它所说的:有人删除了feat_branch中的文件,但同时修改了同一个文件。如果您自feat_branch开始后没有修改该文件,那么git将在合并期间删除它。如果他们没有删除它,您的更改将被保留。但在这种情况下,Git需要一个人为的决定,因为显然你有另一个意图,而不是那个男孩/女孩删除文件。

如果您键入git status,您将得到一个有用的提示,提示您哪些命令选择哪个分辨率(即删除文件或保留文件)。