Git Merge 如何使用 Git Merge [正确方法]

2025-05-25

Git Merge如何使用 Git Merge [正确方法]

对于任何认真的开发人员来说,将功能隔离到不同的分支都是至关重要的做法。通过分离每个功能、错误修复或工作实验,您可以避免很多问题,并保持开发分支的整洁

在某些时候,你会想要将一段代码与项目的其余部分集成在一起。这时就需要用到git merge命令了。

准备合并

假设您想要将分支 hotfix合并 到您的master 分支中。

在开始之前,如何确保您已准备好合并更改?

  1. 使用 来检查本地存储库是否与远程服务器的最新更改保持同步git fetch
  2. 一旦获取完成git checkout master
  3. 通过执行确保主分支具有最新更新git pull
  4. 签出应该接收更改的分支,在我们的例子中是主分支。

合并

准备工作完成后,即可使用git merge hotfix命令开始合并。

快速合并

当要合并的分支之间存在线性路径时,可以进行快速向前合并。如果 master 分支尚未分叉,则不会创建新的提交,而是直接将 master 分支指向 hotfix 分支的最新提交。现在,hotfix 分支的所有提交都可以在 master 分支中使用。

git 合并快进

但是,如果分支已经分叉,则无法进行快速合并。在这种情况下,您需要使用三向合并

三路合并

当目标分支没有线性路径时,Git 只能通过三向合并来合并它们。这种合并使用额外的提交将两个分支绑定在一起。

git 合并三向合并 1

测试一下!创建一个包含RSpec 测试分支的项目,同时在 master 分支上编辑Controller 测试。现在,尝试合并。

如何处理合并冲突

当您尝试合并的两个分支都更改了同一个文件的同一部分时,就会发生合并冲突,Git 将无法确定要使用哪个版本。

例如,如果example.rb在同一个 Git 仓库的不同分支中对文件的同一行进行了编辑,或者文件被删除,则在尝试合并这些分支时将出现合并冲突错误。在继续操作之前,必须使用新的提交来解决合并冲突

仅在三向合并的情况下才会发生合并冲突。

  1. 生成需要解析的文件列表: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")
Enter fullscreen mode Exit fullscreen mode
  1. 当遇到冲突行时,Git 会使用视觉指示器编辑受影响文件的内容,这些指示器标记​​冲突内容的两侧。这些视觉标记是:
    • <<<<<<<-冲突标记,冲突从此行之后开始。
    • =======-将您的更改与其他分支中的更改分开。
    • >>>>>>>- 冲突线的结束。
<<<<<<< HEAD(master)
conflicted text from HEAD(master)
=======
conflicted text from hotfix
>>>>>>> hotfix
Enter fullscreen mode Exit fullscreen mode
  1. 决定是否只保留热修复或主代码的更改,或者编写全新的代码。合并更改之前,请删除冲突标记。
  2. 当您准备合并时,您所要做的就是在冲突的文件上运行git add 命令来告诉 Git 它们已解决。
  3. 提交您的更改以git commit生成合并提交。

希望这能帮助您更好地了解如何合并分支和处理冲突。

本文最初发表于Kolosek Blog

文章来源:https://dev.to/neshaz/how-to-use-git-merge-the- Correctway-25pd
PREV
git reset soft 何时使用 Git Reset、Git Revert 和 Git Checkout
NEXT
15 个原生 JavaScript 项目构想:从初学者到专家 [附免费教程] 入门级 中级 项目构想 高级 项目构想 专家级 项目构想