此为Pro Git读书笔记,博文图片均转载自书中,但本文和Pro Git均为开放免费的,
未曾商业之用!
rebase翻译为“重定基底”,其和merge一样属于合并多个分支的操作,但是稍微有些不同。
这里有两个分支:
现在想合并这两个分支,假如没冲突,merge动作会新建一个节点,把C3和C4的改变都添加进去。
rebase既然是重定基底,那么就是改变原来的基,其实这里的基就是前驱节点的意思。
比如:C2
的前驱节点是C1
,C1
是被箭头指向的节点,代表C2
在C1
的基础上工作。
那么能不能将C4
直接移动到C3
的后面,不创建新的节点呢?当然可以,就是用rebase
接下来再直接合并分支experiment
和master
,那么这个操作就是合并操作就是快速转发型的了。
rebase操作我认为一般不常用,不过其优点就是减少git log产生的日志比较好看,就好像经过串行开发过程留下的日志一样,可以从上图中看到。
但是rebase操作因为改变了节点的基,所以不要在分支上commit了几个节点到远程,然后再rebase。因为有可能你的工作会干扰别人的工作。一句两句说不清楚,具体参见上书。但是如
果不想过于复杂,又非常想很安全的使用rebase,那就遵循一个原则:
永远在本地使用rebase,然后清理掉被rebase的分支,这样git历史会相当清白