git 如何删除中间某个commit同时保留后面的commit

参考git删除中途某一次commit
这种事情是不常遇到的,这里就是记录个变通方法,比如版本的提交如下,我要删掉commit-m这次的提交而保留后面的提交。

commit-n
commit-(n-1)
..
commit-(m+1)
commit-m
...
commit-1
commit-0
  1. 首先使用 git format-patch -(n-m) ,生成n-m个补丁文件 000(n-m)-commit-msg.patch,
    000(n-m).patch是最后一次commit的补丁,
    0001-commit-msg.patch是commit-m到commit-(m+1)的补丁。
  2. 使用git reset –hard commit-(m+1)退回到commit-(m+1)的版本,因为要删除commit-m,所以要在commit-(m-1)和commit-(m+1)之间做一次新的提交。
  3. 在 commit-(m+1)版本处使用git reset commit-(m-1),退回到 commit-(m-1)版本同时保留M+1版本的更改
  4. 由于回退时保留了修改,这里直接提交修改,
    git add -u
    git commit -m “从m-1到m+1的更改备注”
    提交后就回到了m+1的版本了
  5. 然后就是打补丁,提交修改
    patch -p1 < 0001-commit-msg.patch
    git add -u
    git commit -m “commit-msg”
    一级级的往后打补丁提交就好了,这是比较笨的办法,没办法啊,这种犯傻的事情也不多吧。

后记:
今天又记住了一个git命令
git format-patch -(n-m) 生成补丁,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值