首页 > 代码库 > 如何解决GitHub冲突<二>:使用命令行解决合并冲突

如何解决GitHub冲突<二>:使用命令行解决合并冲突

如何解决GitHub冲突<二>:使用命令行解决合并冲突

你可以使用命令行和文本编辑器来解决“合并冲突”。

合并冲突往往会发生在以下情况:

 

(1)多个代码更改发生在同一行代码上

(2)一个提交删除了某一个文件而另一个提交尝试去编辑该文件

1.解决同行代码竞争引起的合并冲突

为了解决一个由更改同行代码引起的合并冲突,你必须决定在冲突方中哪一个提交的代码才是最终需要提交到分支上。

举个例子,如果你和另一位开发人员在一个Git代码仓库内同时修改了styleguide.md文件中的同一行,你就会在合并分支时遇到合并冲突报错。你必须用一个新的代码提交来解决这个合并冲突,只有这样,合并才能完成。

(1)打开Git Bash。

(2)进入发生代码冲突的本地Git仓库。

技术分享

 

(3)获取受到合并冲突印象的文件列表。在本例中,文件styleguide.md有一个合并冲突。

技术分享

 

(4)打开你最心爱的文本编辑器,例如Atom,并用他找到文件中冲突发生的地方。

(5)你可以查找“<<<<<<<”标记符出现的地方来定位合并冲突发生的位置。当你在文本编辑器中打开你的冲突文件时,你会在“<<<<<<< HEAD”行后面看到HEAD或主分支内有区别的代码。接着,你会看到“=======”,这个标记符将划分你的代码修改和另一个分支上的代码修改,进跟着“>>>>>>> BRANCH-NAME”。在这个例子中,一个开发人员提交“open an issue”在主分支(HEAD),而另一个开发人员在对比分支(branch-a)上写了“ask your question in IRC”

技术分享

 

(6)决定你是否只保留你分支上的代码,还是保留另一个开发人员提交的代码,或者编写一个全新的代码提交(包含两者)。删除冲突标记符“<<<<<<<”,“=======”,“>>>>>>>”,并对文件完成你想要的修改。在这个例子中,我们保留了两个代码提交。

技术分享

 

(7)增加你的修改。

技术分享

 

(8)提交代码。

技术分享

 

现在,你就可以在命令行上进行分支合并操作,或者将修改推送至Github远程仓库,并在一个pull request中完成合并操作。

2.解决文件删除引起的合并冲突

为了解决修改文件引起的合并冲突,例如有人编辑了被另一个人删除的文件,你必须决定该文件究竟应该被删除还是保留在项目分支中。

举个例子,如果你编辑了一个文件,例如README.md,而另一个人在同一个Git仓库的另一个分支移除了这个文件,当你尝试合并分支时你会遇到一个合并冲突报错。你必须解决这个冲突,以期能继续合并分支。

(1)打开Git Bash。

(2)进入发生代码冲突的本地Git仓库。

技术分享

 

(3)获取受到合并冲突印象的文件列表。在本例中,文件styleguide.md有一个合并冲突。

技术分享

 

(4)打开你最心爱的文本编辑器,例如Atom,并用他找到文件中冲突发生的地方。

(5)决定你是否要保留被移除的文件。你也许想在文本编辑器中查看被移除文件最后的修改。

下面指令将把被移除的文件重新加回仓库中:

技术分享

 

下面指令能移除你仓库中的冲突文件:

技术分享

 

(6)提交代码。

技术分享

 

现在,你就可以在命令行上进行分支合并操作,或者将修改推送至Github远程仓库,并在一个pull request中完成合并操作。

如何解决GitHub冲突<二>:使用命令行解决合并冲突