为什么推荐使用变基呢?
因为提交历史是一条线,很清晰不会像merge一样好几条线且会出现Merge remote-tracking branch ‘origin/feature1’ into feature1这样让人困惑的merge。使用rebase时,只要注意好一点,下游分支在更新上游分支时,让其他全部人员都提交、push,然后再由一个人来操作,如果不这样做的后果是,可能会覆盖同事的push,但是还是可以找回来的,只要被覆盖同事也设置的是rebase。
rebase的过程
rebase的原理就是,比如在feature1分支上更新,那么就以远程feature1分支作为基础(head指向远程分支的最后commit),然后找出本地feature1与远程feature1的共同祖先,将本地feature1共同祖先以后的commit在远程feature1重放一遍。head就是黄色的图标。
merge

rebase
最佳实践intellij idea设置
我用的是intellij idea开发,所以就以此工具举例。
settings(ctrl+alt+s)—>version control---->git,使用rebase。
更新(ctrl+T)时,选择rebase。
如果更新时不弹出确认框,则settings(ctrl+alt+s)—>Version Control—>Confirmation---->勾选Update。这个设置,对svn也生效。
合并上游分支的最佳实践
- 待下游分支开发完毕后,所有成员都commit、push
- 由一个人在下游分支上rebase 上游分支,然后强制push,因为强制推送会覆盖远程,所以要求第一条;
上游分支合并下游分支最佳实践
在合并上游分支的最佳实践的基础上
- 切换到上游分支,直接merge下游分支,合并后是一条直线。