如何解决Git中的冲突?

9
当我尝试拉取时,出现以下消息:
Automatic merge failed; fix conflicts and then commit the result.

所以,我尝试修复冲突(如git建议的那样),为此我遵循这些说明。

首先要做的事情之一是在文本编辑器中打开“有问题”的文件并查找像这样的行

If you have questions, please
<<<<<<< HEAD
open an issue
=======
ask your question in IRC.
>>>>>>> branch-a

问题在于我在我的文件中没有看到这样的内容。特别是我搜索了HEAD,但并没有找到。


1
git status 是否列出了“双方”修改的文件?您确定您正在查看正确的文件,并且已经在整个文件中搜索了冲突标记吗? - Tim Biegeleisen
1
在某些编辑器中,您需要重新打开文件才能看到冲突标记,这些编辑器不会在后台监视文件更改(有些甚至更糟糕,会用自己的更改再次覆盖文件)。 - Ferrybig
这里有一个流行的帖子列表,列出了许多选项(例如Meld、DiffMerge、KDiff3):https://dev59.com/BHVC5IYBdhLWcg3w9GE9 - TT--
1个回答

18

解决git冲突有几种方法,我将在此处使用GUI和文本编辑器方式进行解释。

使用文本编辑器解决git冲突。

打开您喜欢的任何一个编辑器,例如Notepad、gedit、vim、nano甚至Eclipse。

  1. 每当文件中存在冲突时,git会添加冲突标记,看起来像这样:<<<<<<<<

  2. 当您在文本编辑器中打开文件时,您会看到HEAD或基本分支中的更改位于<<<<<<< HEAD之后。

  3. ========将您的更改与其他分支分开,显示为>>>>>>>>YOUR_BRANCH_NAME

  4. 您可以决定是否要保留您的分支更改。如果要保留您所做的更改,请删除冲突标记,即<<<<<<<=======>>>>>>>,然后执行合并操作。

提交更改的命令。

git add . or git add "your_file"
git commit -m "Merge conflicts resolved"

解决git冲突的GUI

如果你在文件中有很多合并冲突怎么办?这时你可以使用GUI界面来解决,当然选择是否使用GUI纯属个人喜好。在GUI界面中,你可以看到侧边差异。对于初学者来说,更容易看到变化。

你需要配置git来使用你想要的合并工具。例如:meld、kdiff3或vimdiff。再次强调,这取决于用户的个人偏好。我使用meld。在这里,你需要安装这些工具,安装后还需要进行配置。

git config merge.tool meld 

你可以解决合并冲突

git mergetool -t meld

然后,您可以按照使用文本编辑器解决合并冲突的步骤2至4来解决合并冲突。

我看到一些字符串,可能是一个ID,而不是“YOUR_BRANCH_NAME”。那个ID是用来做什么的? - MasterJoe
请参阅:设置并使用Meld作为您的git difftool和mergetool:https://dev59.com/2VsX5IYBdhLWcg3wNdDj - mattst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接