git rebase -i 交互式变基的使用,以及squash压缩多次提交的方法

交互式变基这个词是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
按esc,然后输入:(键盘上shift+:),输入wq,即保存退出。
上边pick编辑为s,就是意味着,将后两次提交“压缩”到第一次提交中。就是三次提交压缩为一次提交。

值得注意的是,第一行是不能改为s的,因为总需要个垫底的,否则你往谁身上压缩。

另外不要被编辑的复杂给唬到,其实vim就是一个linux的编辑器,一些大神甚至把他用作ide,你觉得复杂,只是因为你不熟练而已。

在这里插入图片描述

在保存退出后,立刻又进到另一个编辑界面。如下:

在这里插入图片描述
这个界面就干一件事:写提交信息。你上一步操作把提交合并了,但提交信息以哪次为准?这个你需要告诉git。

上图未注释的三行代码就是我三次提交的信息,注释掉你不需要提交信息。剩下的就是最终的提交信息。你可以都注释掉,自己重新写。总之,这个界面任何未注释的内容都将成为提交信息的一部分。

同样是vim的操作,保存退出即完成了全部的操作。

在这里插入图片描述

可以看到我基于master切出的dev2分支的三次提交被压缩成一次提交。

之后再次把dev2分支合并到master分支即可。可以看到提交图谱很干净:
在这里插入图片描述

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别说小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值