修改git历史提交的commit信息

本文是基于idea的操作,亲测可用

前言:

很多公司都会自定义 Git - 使用强制策略,那么他的commit信息就会有固定的格式,一旦不是这个格式,就会出现push失败
但是push失败,很多也只在dev和master分支做强制限定,其他分支却没有限定(当然,我觉得这种做法有些弊端,应该所有都限定才对,但我对这个强制限定没研究过,暂且不说这个问题)
比如限定的是:所有commit都必须以ABC开头,比如ABC-1,ABC-2
那么如果我们在其他分支开发,已经提交了很多次,其中有些没有带ABC,那么将来合并到dev的时候,commit会成功,但push就会失败
这种情况,你全部回退已经不可能了,只能修改git历史提交的commit信息,在前面加上ABC

修改git历史提交的commit信息

这个是用到了git的rebase命令,大致情况就是进入rebase模式,然后修改当初某条提交的commit信息,保存退出

下面说说详细步骤:

1.找到你要改的那条commit消息,在version control栏里,从现在往回数数,看是第几条修改的
也可以在terminal栏里,命令行输入 git log ,按回车一直往回找,总之就是找到你要改的那个是多少次以前修改的。

2.知道次数后,就开始进入rebase模式了,命令行输入:git rebase -i HEAD~28
比如28就是你的次数,这时你会看到一些信息,类似于:
pick XXX 你的某条commit信息
pick XXX 你的某条commit信息
pick XXX 你的某条commit信息
如果没有找到你要改的commit信息,那就是第一步找错了,:wq推出重新找
如果你第一步数对了,应该里面有一条就是你要改的,那么将那条对应前面的pick改成edit
这个可以理解成linux的vi语法,按i进入insert模式,修改完后etc,然后:wq保存退出

3.上一步只是说找到你要改的那条,并没有真正改,此时命令行输入:git commit --amend
然后你就会看到你要改的commit信息,然后把他改成你要的格式,还是:wq保存退出

4.改完了,push一下,就没问题了。
push的时候,如果有冲突,accept theirs就行

相关参考:
1.自定义 Git - 使用强制策略的一个例子
https://git-scm.com/book/zh/v2/自定义-Git-使用强制策略的一个例子
2.修改 git 历史提交 commit 信息(重写历史)
https://www.jianshu.com/p/0f1fbd50b4be

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值