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