git如何修改某次历史提交的commit信息和代码

问题

开发过程中,我们可能遇到一次merge多个commit的情况,在merge之前我们做测试的时候发现某次提交有问题,这时候我们又不想新提一个commit来解决这个问题,这时候该怎么办?

解决方法

git log 查看历史提交
A---B(有bug)----C----D---E

发现 B 提交有bug,我们想要直接修改B,但是又不想多增加F提交;或者我们想修改B提交的commit信息。

git rebase 修改历史提交
1. git rebase -i HEAD~5							// rebase HEAD之前的5次提交
2. 将需要修改的commit所在的行前面的 pick 修改为edit或者e

利用命令行修改文本,将光标移动至B提交前面pick,然后输入i进入修改模式,将pick改为e,然后输入wq保存
pick b4ba123435 A
e 0ae807b99c B
pick 70890e2e86 C
pick aa0778f109 D
pick 630cc16edb E

3. 之后会发现git的分支信息变为   master|REBASE-i 2/5
4. 修改bug代码,如果只需要修改commit信息可以跳过此步
5. git commit --amend							// 以当前代码重新覆盖本次提交
6. 修改commit信息,若不需要修改commit信息则可以直接wq保存结束
7. git rebase --continue						// 继续rebase,如果有冲突则解决冲突
注意
  • 如果rebase过程中不想rebase了,可以使用
git rebase --abort 								// 终止rebase
  • rebase结束后,会修改所有rebase的commitID,如果想要push到远程仓库可能需要强制push
git push [仓库名] [分支] -f
  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值