Git是开源项目和许多封闭源项目的标准源码管理工具。这篇文章向Git新手展示如何做一些稍微高级但至关重要的事情:解决git合并冲突。
什么是git 合并?
所有现代源代码管理系统都有一个基本特征:多个开发人员能够同时在同一项目上工作,而不会相互干扰。Git通过允许多个开发人员在本地的分支上工作来实现这个特性,然后将他们的代码推到一个中心位置。然后,其他人可以将代码拉回到他们的本地副本,这样他们就可以在别人的代码基础上继续工作。
当您想要将某个分支中的更改应用到当前分支时,可以使用git merge命令。合并操作会将其他分支中的所有更改应用到当前分支。
什么是合并冲突?
在并行工作的模式下,工作最终会发生重叠。有时两个开发人员会以两种不同的方式更改同一行代码;在这种情况下,Git无法判断哪个版本是正确的,这时只有开发人员才能决定。
如果发生这种情况,开发人员将在git合并过程中看到以下错误:
解决合并冲突可能只需要一分钟,也可能需要几天时间(如果有许多文件冲突需要解决)。我建议要经常提交、推送、拉取和合并,每天多次同步你的代码,这样可以减少冲突的可能。
如何解决git合并冲突?
Git在其错误消息中给出了解决冲突的提示信息。在[filename1]中显示有合并冲突,所以你知道该文件有问题。然后它提示你需要先解决冲突,然后提交结果,所以如果你遵循它的提示,编辑文件,然后提交,一切都会正常工作。让我们实战演示一下吧。
创建一个新的Git仓库,添加一个文件,创建一个分支,进行一些有冲突的编辑,然后看看它是什么样子。
先在一个空目录中运行git init:
现在创建一个README文件并提交更改:
创建一个新分支:
在新分支中:
编辑文件:
现在提交更改:
返回到master分支,编辑README的第3行,输入一些不同的文字,然后提交。
回到master分支:
编辑README:
提交更改:
把分支合并到master会看到错误:
现在打开README文件,看起来如下:
如你所见,Git增加了7个“小于”符号,还有7个“大于”符号,中间还有7个“等于”符号。你可以在编辑器中搜索这些字符快速找到有冲突的地方。
1.“小于”符号表示的是当前分支的修改(本例中是“HEAD”,表示当前分支),等于符号表示当前分支的结束。
2.“等于”符号下方至“大于”符号之间的部分,表示尝试合并的文件修改。
作为开发者,由你来决定哪些内容保留哪些内容删除。根据需要编辑之后,然后关闭文件:
在上面我们采纳了分支中的修改,你可以运行 git status 来查看更多指令:
注意如果你遇到了严重的问题,可以选择停止合并,运行 git merge –abort 可以停止合并。
运行如下命令增加文件,然后提交:
总结
如果时间足够长的话,任何规模的团队都会遇到合并发生冲突的问题。作为开发者,我们要保持清醒的头脑,知道自己在做什么,哪些是我们需要的代码修改。当你遇到合并冲突时,理解这部分知识至关重要。
领取专属 10元无门槛券
私享最新 技术干货