Git合并分支
作者:向前的步伐 / 发表: 2020年8月23日 00:18 / 更新: 2020年8月23日 00:18 / git&工具 / 阅读量:597
一、简介
多人在同一项目中的协作开发,就会创建各自的分支进行开发。比方说:每个人开发不同的功能,在各自的分支开发过程中互不影响,完成后都提交到develop分支。在合并分支上必定会常用到 git merge、git rebase语法,二者都有用于分支合并的功能。
二、合并的过程示例
- 在一个git项目中首先创建两个初始文档:1.txt 和 2.txt 记作“1” 和 “2”;
- 创建一个新的分支branch;
- 然后继续在主分支master上新建两个新的文档并提交推送到远程:3.txt 和 4.txt 记作“3” 和 “4”;
- 回到branch分支上创建两个新文档提交推送到远程:5.txt 和 6.txt 记作“5” 和 “6”;
此时我们的master分支上有1,2,3,4这4个文件的提交记录,branch分支有1,2,5,6这4个文件的提交记录,接下来,使用两种merge和rebase两种方式来合并分支:
merge
直接回到master分支上合并branch分支。
此时我们的 git log 上保留了分支branch的 5 和 6 的commit提交,且又在主分支master上自动创建了一个新的commit提交节点 “7”。
就是说master的1、2、3、4和合并的branch的5、6的提交历史节点都被记录下来了,且自动在Master上自动生成第7个节点,提交历史如下:
rebase
先在branch分支上使用rebase master分支,此时可以看到branch分支上已经有1·、2、3、4、5、6的提交记录,再回到master分支合并branch分支。
这时我们的 git log 上就得到一个简洁的项目历史,且未生成新的 merge commit(保留了分支上的提交信息成功与Master合并,但删去了提交历史记录):
三、什么是rebase
rebase就是"变基",其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。即:改变一条分支的基点,使原分支从指定的节点(commit)延续。。
通俗点讲,变基操作其实就是保留了该 commit 作出的修改,但删丢弃了分支上一些现有的提交记录,删去了这些节点。
原理很简单:rebase需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。
四、rebase和merge的区别
rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
例如:如果你从 master 拉了个branch分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。
merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交。