交互式变基这个词是sourceTree的翻译。
交互式变基可以将多个提交合并为一个,当然他的功能不止于此。但一般用于以下情况:
在某个分支(比如dev)下做功能开发,当测试完毕,将要合并dev到master,但由于开发过程中有太多的提交,合并到master之后会让master的整个提交记录看起来不优雅,所以这时候可以用交互式变基去合并,这样做有两个好处:
rebase 可以让合并过程中不产生合并的那次提交,也就是说合并完成后master分支图谱仍旧是一根线。
squash多个提交保证开发分支的多次提交记录合并完成后仅有一个提交。
这两步是在一次交互式变基操作中一起完成的。
其实我们在dev上开发大部分情况都仅仅涉及到了一个功能点,比如某个bug fix,合并到master后理应仅有一个提交来保证master提交记录的可读性。
具体操作:
# 当前在dev分支
$ git rebase -i master
接着就会进入到一个交互式的界面,不要被吓到…
不要被这个界面唬到,这么多文字其实全是注释,他只是在告诉你怎么用。简单来说,我们仅仅用到squash,最上边的三行没有注释的是我的将要rebase 和 squash的三个提交。这个窗口完全和vim一样需要你去编辑。
在当前这个页面键入i(进入编辑模式),此时会出现光标
移动光标到第二行和第三行,将pick编辑为s
按