merge
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论