返回介绍

merge

发布于 2024-09-16 00:23:11 字数 1255 浏览 0 评论 0 收藏 0

merge 的意思是 [合并],指定一个 commit,把它合并到当前的 commit 来。

从目标 commit 和当前 commit(即 HEAD 所指向的 commit) 分叉的位置起,把目标 commit 的路径上的所有 commit 的内容一并应用到当前 commit,自动生成一个新的 commit。

git checkout main
git merge feature1

适用场景

merge 最常用的场景有两处:

  • 合并分支

当一个 branch 开发完成,需要把内容合并回去时,用 merge 来进行合并。

  • pull 的内部操作

pull 的内部操作是把远端仓库的内容用 fetch 取下来,用 merge 来合并。

冲突

merge 在做合并时,具有一定的自动合并能力。

如果一个分支改了 A 文件,另一个分支改了 B 文件,那么合并后就是既改 A 又改 B,这个动作会自动完成。

如果两个分支都改了同一个文件,但一个改的是第 1 行,另一个改的是第 2 行,那么合并后就是第 1 行和第 2 行都改,也是自动完成。

但如果两个分支修改了同一部分内容,merge 的自动算法就搞不赢了,它不知道以哪个为准,就会把问题交给你自己来处理。这种情况称为:冲突 (Conflict)。

git merge main

提示信息说,在 list.txt 中出现了 "merge conflict",自动合并失败,要求 "fix conflicts and then commit the result"(把冲突解决掉后提交)。

现在你需要做两件事:

  • 解决冲突

打开 list.txt,会发现它的内容变了:

Git 虽然没有帮你完成自动 merge,但它对文件还是做了一些工作:

把两个分支冲突的内容放在了一起,并用符号标记出了它们的边界以及它们的出处。

HEAD 中的内容是 [成年男人的崩溃往往在一瞬间...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文