关于这个命令的说明请先参考官方文档:Git - 变基
看完了它炫酷的功能以后,瞬间感觉强大是真强大,炫酷是真炫酷。可惜好像用不到。
别着急,我们要用的不是它强大的变基能力,而且另有图谋——合并提交。
实际开发过程中,很难保证一个功能我们只提交一次代码,有些人可能完成一段令自己满意的逻辑就会先提交一次。过一会又优化了刚刚另他满意的那段代码。这时可能又提交了一次。又或者你发现自己刚刚提交的代码了有一个低价错误,赶紧修改了提交。以上提交历史都会完整的保存在git的记录记录里。其实有些中间过程的提交是没有必要的,或者是最好不要让别人看到。
这时我们就可以上面这个强大的功能了——变基
多说一句这个功能的本意是一种合并代码的方式,把并行的开发改成看上去是顺序的提交。这个从官网的文档去体会。
言归正传,合并提交 下面直接上例子了。
先来三次过程提交:
我想合并成一个提交,最后提交说明也可以再改改。
在git提交记录里选择最早的一次提交,右击,然后 Interactively ReBase from Here...
会出现如图的对话框,选择第一次提交 点击 Reword 可以编辑提交信息。
然后选择要隐藏的提交,如第二次和第三次提交分别点击 Squash 这时 后面的提交信息会合并到第一次提交里,如果不想要提交说明呢,这里就选择 Fixup
然后操作完以后 就点击右下角 Start Rebaseing 就可以了
完成前的状态:
看看效果:
这是提交别人看到的是一次。
代码是分多次提及的。
关于这个炫酷的功能的操作就是这些。
变基的风险
呃,奇妙的变基也并非完美无缺,要用它得遵守一条准则:
如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。
“如果你遵循这条金科玉律,就不会出差错。 否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。”——这段翻译的真是精彩!
下面赠送一张GitHub 规范操作图 rebase就是在这里被发现的😄