git合并分支

git合并分支

关于git合并分支,最常用的是使用git merge 命令,不过今天学到了一个新技能那就是使用git rebase 进行分支合并,它有什么好处呢?它与git merge的区别又是啥呢?

git rebase的优点:

1、不同分支上的代码提交记录是不一样的,使用git rebase合并分支后,它可以生成一个更简洁的历史提交记录;

为什么是简洁的?
这是因为相对于git merge合并(git merge合并是三方合并,即待合并的两个分支以及两个分支最近的共同父节点)遇到代码冲突后,我们手动修改冲突提交后,它会多产生一个新的提交记录(用于表示解决冲突后的提交),而git rebase就不会产生这样多余的提交记录;

2、虽然我们实际上是在不同分支做的修改并分别提交,但从合并后的分支代码的提交记录来看,我们在不同分支上所做的修改就像是在一个分支上完成的;

git merge的区别:

git merge合并不同分支提交记录时是按照不同分支上提交记录的时间戳来进行排序合并,也就是说在合并后分支的提交记录中,我们可以看到不同分支上代码代码提交记录会交错出现;

相比之下,git rebase合并分支后的代码提交记录并不是按照提交时间戳进行排序的,更像是叠加在一起;

git merge的合并方式是通过三方合并,生成一个新的提交记录,而git rebase合并是将分支的提交记录储存在一个临时文件中,然后删除分支的提交记录,让不同分支代码合并,最后将临时文件中的提交记录应用在合并后分支上;

使用git rebase需要注意的:

在使用git rebase合并分支遇到代码冲突时,我们手动解决掉冲突后,使用git add.添加,此时不需要使用git commit提交,而是执行git rebase --continue继续完成合并;

当我们在执行git rebase命令后,在接下里的任何阶段,我们都可以通过执行git rebase --abort来终止合并操作,并且当前分支会恢复到执行git rebase命令前的状态;

git rebase命令非常适合应用在分支提交的修改信息还没有被推送到远程仓库的分支,也就是在分支上进行的修改仅提交到本地仓库(使用git commit但没有使用git push),如果分支的修改信息已被提交到远程仓库,且有其他同事使用git pull合并后,此时再使用git rebase合并提交到远程仓库后,其他同事再次合并后会带来重复的提交记录,让代码提交历史记录变得混乱;

分支上的修改信息已经提交到远程仓库的,慎用git rebase

参考文献:

[1] 【Git系列】git rebase详解
[2] rebase
[3] Git 分支 - 变基

你可能感兴趣的:(git)