Git修改提交记录的顺序/删除某次提交记录

网上搜索了很多方法,不一而足,本博文提到的方法,是我认为最容易理解的:

每一次提交记录,都能生成对应的补丁(patch),先生成各个提交记录的补丁,然后硬回退版本(reset --hard),然后按照期望的提交顺序,顺次打补丁(am).

关于补丁之间的冲突,没有考虑(因为调整的是某个分支上的提交记录,理论上不会有冲突的地方),有冲突风险的,不在本文讨论范围之内.
关于补丁的生成和应用,参见博客:

https://www.cnblogs.com/ArsenalfanInECNU/p/8931377.html

  1. 如图所示,某次开发过程中,需要调整红框中两次提交记录到箭头所示位置
    图画的对付了点,说明问题就行
  2. 生成补丁:git format-patch -n;此情景下,n的值为4;生成补丁情况,如下图所示(补丁的序号,是从最后一次提交记录倒序到1,即n…1)
    在这里插入图片描述
  3. 硬回退版本(reset --hard version-num),如图示,回退后,远程分支未受影响,本地的head已经变更.
    在这里插入图片描述
  4. 我们期望的提交记录顺序是:0003(smallFix),0004(版本号153),0001(…),0002(…),则按照这个补丁顺序依次打补丁即可,注意补丁和提交记录的对应关系.注:如果中途失败,执行git am --abort
    在这里插入图片描述
  5. 应用完最后一条补丁后效果如图示:
    在这里插入图片描述
    这时候,是强推到远程分支,还是删除远程分支后再重新push,看你的喽.
  6. 会用补丁调整提交顺序了,删除某次提交记录还在话下吗?删除某个补丁,让后git am *.patch,会按照path的序号,顺次应用所有补丁.保险起见,在生成补丁进行应用之前,将所有补丁拷贝出一份来再进行操作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值