修改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

使用Git进行版本控制时,难免会遇到需要修改提交记录的情况,但修改提交记录可能会影响团队协作,因此需谨慎处理。以下是不同场景下修改git历史提交记录中commit内容的方法: ### 修改最近一次提交 若只是修改最近一次提交commit内容,可使用`git commit --amend`命令。执行该命令后,会进入默认的文本编辑器,在其中修改提交信息,保存并退出编辑器后,最近一次提交commit内容就会被更新。 ### 修改倒数第二次及更早的提交 若要修改倒数第二次提交信息使用`git commit --amend`修改后,再用`git rebase --continue`完成修改修改完成后,提交并推送修改,最后检查远程仓库确认修改是否成功 [^3]。 ### 修改已经推送到远程仓库的提交信息 Git中整合来自不同分支的修改有`git merge`和`git rebase`两种方式。当因公司PPR检查等需求,需要修改已经推送到远程仓库的Git提交信息时,可按以下步骤操作: ```bash # 1. 使用git rebase -i HEAD~n(n为要修改提交数量)进入交互式变基模式 git rebase -i HEAD~2 # 上述命令表示修改最近的2个提交记录,执行命令后会打开一个文本编辑器,列出指定范围内的提交记录 # 将需要修改提交记录前面的pick改为edit,保存并退出编辑器 # 2. Git会停止在需要修改提交处,此时使用git commit --amend修改提交信息 git commit --amend # 3. 修改完成后,使用git rebase --continue继续变基过程 git rebase --continue # 4. 最后将修改推送到远程仓库 git push -f origin <branch_name> # -f表示强制推送,因为修改历史提交记录会改变提交的哈希值,需要强制覆盖远程仓库的提交历史 ``` ### 修改某次有bug的提交 在开发过程中,若某次commit有bug,又不想新提一个commit来解决问题,可按如下方式操作: ```bash # 1. 使用git rebase -i <commit_hash>进入交互式变基模式 # <commit_hash>是需要修改提交的哈希值的前几位,执行命令后会打开一个文本编辑器 git rebase -i 8d9f2 # 2. 将需要修改提交记录前面的pick改为edit,保存并退出编辑器 # Git会停止在需要修改提交处 # 3. 修复代码中的bug # 完成修改后,使用git add添加修改的文件 # 4. 使用git commit --amend修改提交信息 git commit --amend # 5. 使用git rebase --continue继续变基过程 git rebase --continue # 6. 最后将修改推送到远程仓库 git push -f origin <branch_name> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值