git rebase 和 git merge是git合并分支的两种方式然而怹们却采用了不同的工作方式,以下面的一个工作场景说明其区别:
下图所示:当feature分支有新的需求提交同时,master 分支也有修改
当合并时遇到冲突,修改后重新commit即可
优点:将commit的实际情况进行记录便于以后查看
缺点:由于每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools如果commit频繁,这样会使得feature分支很杂乱这时可以考虑使用rebase来进行合并处理。
本质是变基即找公共祖先
优点:项目历史比较简单,少了merge commit
缺点:当发生沖突时不容易定位问题因为re-write了history
合并时如果出现冲突需要按照如下步骤解决
rebase 将所有master的commit移动到你的feature 的顶端。问题是:其他人还在original master上开发由於你使用了rebase移动了master,git 会认为你的主分支的历史与其他人的有分歧会产生冲突。
所以在执行git rebase 之前 需要认真考虑
会有其他人看这个分支么?