git rebase 合并提交记录

    开发过程中,在一个开发分支上进行了多次提交,最后将所有修改合并回主干。如果使用merge方式合并,会将每次commit全部合并过去,这样主干上会出现很多提交记录。而我们期望的是,主干上只有一条诸如"解决xx问题"的记录。这时,可以在开发分支上将多次提交合并为一次。

    在开发分支上执行 

1 > git rebase -i HEAD~6

    `HEAD~3`表示要合并最近的3次提交,`HEAD~6`表示要合并最近的6次提交。

    会产生一个临时的 rebase 描述文件,并进入 vim 编辑器,我们需要编译这个文件,告诉 git 要如何 rebase
    文件开头每一行是对一次 commit rebase 描述,根据下方的提示修改各行描述信息。每行描述有三段,命令、commitIdcommitMessage
    其中主要的命令有如下几个:

命令提交(修改)内容提交记录提交信息(commit message)
p保留保留保留
s保留保留不保留
f保留不保留不保留
d不保留不保留不保留

 

    pick 保留提交记录,每出现一个 p,rebase完成之后,会有一行提交记录。rebase不一定会把所有提交合并为一,而是出现几个p,合并为几个提交记录。
    squash 会保留这次提交所作的修改,但不保留提交记录,会把这次修改压缩合并到上个提交,就是上面的pick记录上,同时将本次commit message添加到上个提交的后边。
    fixup squash 类似,会把这次修改压缩合并到上个提交,但是不添加commit message
    drop 会彻底丢弃这次提交,就像从来没有过这次提交一样,rebase完成之后,这条提交记录没有了,它所做的修改也没有了。

    例如,将描述文件修改为如下内容:

p ab730e5 cm1
s 5e8b46f cm2
f 9cc1a7a cm3
p 4852f69 cm4
d 5e0b320 cm5
s f07e97d cm6

 

    保存(<Esc>:wq)之后,会执行第一次压缩合并,对应描述文件中的前三行,压缩完成,再次进入vim编辑模式,修改新的commit message,默认信息为"cm1 <\n> cm2",保存之后,会执行下一次压缩合并,修改提交信息,保存。
    rebase过程就完成了。

转载于:https://www.cnblogs.com/LinuSiyu/p/11572703.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值