Git Merge如何使用 Git Merge [正确方法]
对于任何认真的开发人员来说,将功能隔离到不同的分支都是至关重要的做法。通过分离每个功能、错误修复或工作实验,您可以避免很多问题,并保持开发分支的整洁。
在某些时候,你会想要将一段代码与项目的其余部分集成在一起。这时就需要用到git merge命令了。
准备合并
假设您想要将分支 hotfix合并 到您的master 分支中。
在开始之前,如何确保您已准备好合并更改?
- 使用 来检查本地存储库是否与远程服务器的最新更改保持同步
git fetch。 - 一旦获取完成
git checkout master。 - 通过执行确保主分支具有最新更新
git pull。 - 签出应该接收更改的分支,在我们的例子中是主分支。
合并
准备工作完成后,即可使用git merge hotfix命令开始合并。
快速合并
当要合并的分支之间存在线性路径时,可以进行快速向前合并。如果 master 分支尚未分叉,则不会创建新的提交,而是直接将 master 分支指向 hotfix 分支的最新提交。现在,hotfix 分支的所有提交都可以在 master 分支中使用。
但是,如果分支已经分叉,则无法进行快速合并。在这种情况下,您需要使用三向合并。
三路合并
当目标分支没有线性路径时,Git 只能通过三向合并来合并它们。这种合并使用额外的提交将两个分支绑定在一起。
测试一下!创建一个包含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 它们已解决。 - 提交您的更改以
git commit生成合并提交。
希望这能帮助您更好地了解如何合并分支和处理冲突。
本文最初发表于Kolosek Blog。
文章来源:https://dev.to/neshaz/how-to-use-git-merge-the- Correctway-25pd

