阅读 153

git rebase为啥不推荐使用

在刚开始工作的时候,部门一个配管的老师傅强制命令过我们不要使用git rebase,当时不知道为啥。后面慢慢的就习惯了git merge去操作分支了,而git rebase慢慢的就淡忘了,忘到我都不知道咋用了 o((⊙﹏⊙))o 。这里再回顾下,并解释为啥不推荐使用git rebase。

git merge 是将远程的提交和本地的提交生成一个新的提交点。这样分支就会出现岔开的情况。

image.png

如上图,C7就是Merge新生成的点。

git rebase 是将自己本地在分支分离的点后面的提交,先撤销,然后pull下远程,然后将这些提交再apply到最新的代码上。

image.png

远程和本地在C2点分叉的,于是撤销C5,C6的提交,然后将本地代码拉到最新,再将C5和C6 apply到最新的代码上。这样分支历史就是一条线。

rebase的就和它字面意思一样:变基。将本地原来base是旧的origin的变更为你指定的新的origin上去。然后在该origin后的提交重新apply。

操作方式

git checkout 到你的需要提交代码分支上

git rebase 你需要同步的分支上。

如果你pull代码,且本地有提交的话,尝试使用git pull --rebase <远程主机名> <远程分支>:<本地分支>

如果遇到冲突,在冲突解决后

git rebase --continue,可以直接commit操作。rebase会在冲突的commit上停下来,等你解决完冲突再进行下一个提交的apply。

git rebase --abort,取消本次rebase操作。

为什么不推荐使用git rebase

不推荐对git原理不熟悉的人使用git rebase!推荐使用git merge。虽然分支线会难看点。

我们最好在本地使用rebase解决这些冲突问题,合并远程的时候最好不要使用rebase。正如merge的优点,我们想知道事件是怎么发生的。rebase会抹平这些历史痕迹!

git merge虽然难看也有其好处

所有的冲突都可以在一个单一的提交中解决。合并的提交清晰地显示了我们的分支之间的交互点,并且我们的历史叙述了实际上 发生的和 什么时候 发生的。详细的为什么不推荐使用git rebase可以参考:《为什么你应该停止使用 Git rebase 命令》

文章分类
后端
文章标签