概述
将当前分支移植到指定分支或指定commit之上。
Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
git rebase master
git rebase c2
将当前分支移植到master分支或c2提交记录之上。
优点:
- Rebase 使你的提交树变得很干净, 所有的提交都在一条线上
缺点:
- Rebase 修改了提交树的历史
交互式
-i,—interactive
-i
参数会打开互动模式,让用户选择定制rebase
的行为。
git rebase -i HEAD~4
上述命令指定了对当前分支的最近四次提交进行操作
功能
- 调整提交记录的顺序(通过鼠标拖放来完成)
- 删除你不想要的提交(通过切换
pick
的状态来完成,关闭就意味着你不想要这个提交记录) - 合并提交。
多次rebase
当你想将多个分支合成一条线性的提交记录时,按照提交顺序切换相应的分支,然后rebase到相应顺序节点的分支
git merge 和 git rebase 的区别
不同于 git rebase
的是,git merge
在不是 fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似 Merge branch 'xxx' into 'xxx'
的一条提交信息。
另外,在解决冲突的时候,用 merge 只需要解决一次冲突即可,简单粗暴,而用 rebase 的时候 ,需要依次解决每次的冲突,才可以提交。
git merge
git rebase
使用情况
当需要保留详细的合并信息的时候建议使用git merge
,特别是需要将分支合并进入master
分支时;
当发现自己修改某个功能时,频繁进行了git commit
提交时,发现其实过多的提交信息没有必要时,可以尝试git rebase
。
一些开发人员喜欢保留提交历史,因此更偏爱 merge。而其他人(比如我自己)可能更喜欢干净的提交树,于是偏爱 rebase。仁者见仁,智者见智。