最简单的git图解(git rebase)

今天我们来讲解下git rebase命令,以及git rebase命令与git merge命令的区别。

git rebase图解:

假设我们目前有master、demo两个分支,而且demo分支上从master分支上切出来的:

最简单的git图解(git rebase)_第1张图片

从上图中可以看到,我们从C2提交点切出来了demo分支,同时master分支上有了新的提交C4,同时demo分支上也有两个新的提交:C3和C5。此时我们执行下面两条命令: 

git checkout demo         #先切换到demo分支

git rebase master          #将demo分支进行“变基”处理

这样做之后便会成为下面这个样子:

最简单的git图解(git rebase)_第2张图片

 可以看到对demo分支进行“变基”处理之后,相当于是把demo分支嫁接到了master分支的最新的提交C4上,demo分支上特有的提交C3和C5会在C4之后。

merge命令图解:

还是假设我们现在有master、demo两个分支,demo分支是从master分支上的C2提交点切出来的:

最简单的git图解(git rebase)_第3张图片

 此时我们执行以下命令:

git checkout master        

git merge demo

就会将demo分支合并到master分支,同时会生成一个merge提交:C7:

而最终master分支长这样:

可以看到,demo分支上的所有提交点都到了master分支上,而且所有提交点都按照提交时间在master上进行了顺序排列。

git rebase vs git merge:

git rebase branchA 是对当前分支进行“变基”处理,基点就是branchA分支的最新提交;

git merge branchA 是将branchA分支上的提交合并到当前分支上;

git rebase之后,当前分支的历史就变了,比如本来是从C2点切出来的,变基之后,就变成了从C4点切出来了。而git merge之后,不会改变提交历史,而且所有提交点还是会按照提交时间顺序排列在分支上,但是会有一个merge提交,如上图中的C7提交。

所以,如果想保留完整的git提交历史记录,建议还是使用git merge。

你可能感兴趣的:(git,git,github)