及时行乐|rebase 吧,不喜欢 merge 分叉,那就用

阅读本文大概需要3分钟 。
有些人不喜欢merge , 因为在merge之后 , commit历史就会出现分叉 , 这种分叉再汇合的结构会让有些人觉得混乱而难以管理 。 如果你不希望commit历史出现分叉 , 可以用rebase来代替merge 。
rebase , 又是一个中国人看不懂的词 。 这个词的意思 , 你如果查一下的话:
其实这个翻译还是比较准确的 。 rebase的意思是 , 给你的commit序列重新设置基础点(也就是父commit) 。 展开来说就是 , 把你指定的commit以及它所在的commit串 , 以指定的目标commit为基础 , 依次重新提交一次 。 例如下面这个merge:
gitmergebranch1
gitcheckoutbranch1gitrebasemaster
另外 , 在rebase之后 , 记得切回master再merge一下 , 把master移到最新的commit:
gitcheckoutmastergitmergebranch1
从图中可以看出 , rebase后的commit虽然内容和rebase之前相同 , 但它们已经是不同的commits了 。 如果直接从master执行rebase的话 , 就会是下面这样:
总结一下 , rebase指令可以改变commit序列的基础点 。 它的使用方式很简单:
gitrebase目标基础点需要说明的是 , rebase是站在需要被rebase的commit上进行操作 , 这点和merge是不同的 。


    推荐阅读