当你在git分支中工作时,你最终必须将该代码与其他应用程序集成。学习如何使用git merge来实现这一点。
将功能分离到不同的分支对于任何严肃的开发人员来说都是至关重要的。通过分离每个功能,错误修复或正在运行的实验,您将避免很多问题并保持开发分支的清洁。
在某个时候,一段代码会达到你想要将它与项目其余部分整合的状态。这是git merge命令进来的地方。
准备合并
假设我们想要将分支修补程序合并 到您的主分支中。
在我们开始之前,您如何确保您已准备好合并您的更改?
检查您的本地存储库是否与来自远程服务器的最新更改保持一致git fetch。提取完成后,使用该 git checkout master命令。通过执行确保主分支具有最新的更新git pull。签出到应该接收更改的分支,在我们的情况下是主人。
合并
一旦准备工作完成后,你可以开始与合并 git merge hotfix的命令。
快进合并
一个快进合并时,有之间的线性路径可以发生分支,我们要合并。如果主服务器没有发生分离,而不是创建一个新的提交,它只会将主服务器指向修补程序分支的最新提交。所有来自修补程序分支的提交现在都可以在主分支中使用。
然而,如果分支机构已经分化,则快速合并是不可能的。在这种情况下,您想使用三路合并。
三路合并用额外的承诺来将两个分支联系在一起。
测试一下!使用RSpec测试分支创建您自己的项目,同时编辑master中的Controller测试。现在,尝试合并。
如何处理合并冲突
一个合并冲突,当你试图合并这两个两个分支改变了同一个文件的同一部分出现。发生这种情况时,Git将无法确定要使用哪个版本。
例如,如果该文件example.rb在同一Git存储库的不同分支中的相同行上进行了编辑,或者该文件已被删除,则当您尝试合并这些分支时,您将收到合并冲突错误。在继续之前,合并冲突必须通过新提交来解决。
合并冲突只会发生在三方合并的情况下。
生成 需要解析的文件列表: git status# On branch master# You have unmerged paths.# (fix conflicts and run "git commit")# Unmerged paths:# (use "git add ..." to mark resolution)# both modified: example.rb# no changes added to commit (use "git add" and/or "git commit -a")当 遇到冲突线时,Git将使用 标记冲突内容两侧的可视指示符编辑受影响文件 的内容。这些可视标记是:
<<<<<<<- 冲突标记,冲突开始于此行之后。=======- 将您的更改与另一个分支中的更改分开。>>>>>>>- 冲突线的结束。
<<<<<<< HEAD(master)
conflicted text from HEAD(master)
=======
conflicted text from hotfix
>>>>>>> hotfix
决定是否仅保留修补程序或主修改,或者写一个全新的代码。在合并您的更改之前删除冲突标记。
当你准备合并时,你所要做的就是在冲突的文件上运行这个 git add命令来告诉他们已经解决了。
提交您的更改git commit以生成合并提交。希望这有助于您更好地了解如何合并分支机构并处理冲突。