合并分支
在开发过程中,会有许许多多的分支,但每一个仓库都有一个核心分支—— main
分支,用于发布稳定版本的分支。其余的分支开发完成一个功能或修复一个 BUG 之后都是要与 main
分支进行合并。
在 Git 中整合来自不同分支的修改主要有两种方法:merge
以及 rebase
。
Gitee 创建仓库之初的主分支名称是
master
;GitHub 的主分支名称是main
。
merge
如上图所示,时间线中有两个分支,master
与 dev1
不在同一个时间线上。现在,我要把 dev1
合并到 master
中:
git checkout master
git merge dev1
解决两个分支在同一个文件上作出不同更改的冲突,此时的时间线如下图所示:
rebase
在 master
分支中新建一个 dev2
分支,现在的时间线如下图所示:
dev2
和 master
也同样不处在同一个时间轴上,现在通过 rebase
来合并这两个分支:
git checkout master
git rebase dev2
解决两个分支在同一个文件上作出不同更改的冲突,此时的时间线如下图所示:
对比 merge 和 rebase 合并之后的图。rebase 之后,dev2 的时间线和 master 的时间线都是同一个颜色,且 dev2 的 commit 与 master 的 commit 是顺序呈现的。
与 merge 合并之后不同,merge 要多出一个 commit(图上灰色消息)基本上这一个 commit 是解决冲突的记录。
总结对比
- rebase 没有合并的历史 commit,让仓库的时间线看着简洁;
- merge 合并之后多出一个合并的历史 commit;