已经 Push 到远程的提交,如何修改 Commit 信息?

在 IDEA 中写完了新增各种工具类的代码,完成了 Commit 和 Push,代码已经到了 GitHub远程仓库。

继续写着下一个功能的代码,突然,我发现刚才的Commit Message少写了一个已经完成的功能实现。

此时,我的工作区里已经有正在修改但暂时还不想提交的文件:

于是,我使用了 IDEA 的修正提交功能,补全了信息,重新点击了 Commit:

但是,当我再次点击 Push 时,出现了如下报错:

bash 复制代码
error: failed to push some refs to 'github.com:xxx/xxx.git'
!	refs/heads/main:refs/heads/main	[rejected] (non-fast-forward)
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart.

这个错误说人话就是:推送到远程被拒绝了!并且Git 提示你需要先 Pull。

原因分析

远程仓库 保存着修改前的那次提交,我们把它记为 Commit A;

本地仓库 在我使用修正 功能时,Git 并没有直接修改 Commit A,而是把 Commit A 扔掉了,生成了一个全新的 Commit A',这个新的commit有着新的 Hash 值,新的备注。

当我点击 Push 时,远程仓库发现现在推送的 Commit A' 和已有的 Commit A 对不上,为了防止覆盖代码,Git 默认拦截了这次推送。

解决方案

本来我想使用 IDEA 的图形界面,但是,强制推送的按钮居然是灰色的,选不上。

所有,我使用命令行,在 IDEA 下方的 Terminal 中输入以下命令:

bash 复制代码
git push -f origin main

之后,就推送成功了。

小贴士

  1. 这样操作后,GitHub 上并不会多出一条记录,GitHub 上的记录会原地刷新。旧的提交(也就是少信息的那个)会被彻底删除,取而代之的是修改后的新提交。历史记录看起来非常干净,就像从来没有犯过错一样。
  2. 工作区里那个已修改但没勾选的文件不会受到任何影响,可以在下一次准备好时再提交。
相关推荐
小羊没烦恼!15 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读16 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车17 小时前
C/C++ 为什么需要编译器?
开发语言·c++
lpfasd12318 小时前
2026年第38周GitHub趋势周报
python·科技·github
霍霍的袁18 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超18 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
u13013018 小时前
GitHub 热榜项目:日榜(2026-09-21)
人工智能·github
此生决int18 小时前
深入理解C++系列(20)——C++11(下)
开发语言·c++
张洛闻Eren19 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github