git rebase
命令经常被认为是 Git
巫术,它可以让开发团队在使用时更加轻松。在本文中,我们将 对 rebase
与merge
进行比较。
当你开始在专用分支中开发新功能时另一个团队成员以新提交更新 master 分支会发生什么。这会出现分叉历史记录,对于使用 Git 作为协作工具的任何人来说都应该很熟悉。
当前进度
现在我已经这个功能已经开发完成,想要合并 feature
到 master
分支,此时有两种方法可以合并:merge
和 rebase
使用 Merge 合并
最简单的是将 master
分支合并到 feature
分支中,merge
会将两个分支的历史联系在一起,分支的合并后会创建一个新的 commit
:
merge
使用起来很方便,对于个人开发来说确实友好,但是如果当前项目有多个人开发,每个人都用了 merge
,每次都会留下历史记录,合并后在创建一个 commit
,项目的代码历史树就会有多个branch跟这个主的branch交织在一起,类似一个蜘蛛网,之后想要回退或者其他需求就会很麻烦。
使用 Rebase 合并
作为 merge
的替代方法,你可以使用以下命令将 feature
分支 rebase
到 master
分支上,这会将整个 feature
分支移动到 master
分支的顶端,从而有效地整合了所有 master
的新提交。
rebase
可以获得更清晰的项目历史记录,从 feature
分支顶端一直跟随到项目的开始而没有任何的分叉。
总结
如果你更喜欢提交的干净,消除不必要合并的线性历史记录,那么你在继承另一分支的更改时应该使用
rebase
而不是merge
。
如果你想保留项目的完整历史记录并避免重写公共提交的风险,你可以仍然使用
merge
。