在 IDEA 中写完了新增各种工具类的代码,完成了 Commit 和 Push,代码已经到了 GitHub远程仓库。
继续写着下一个功能的代码,突然,我发现刚才的Commit Message少写了一个已经完成的功能实现。
此时,我的工作区里已经有正在修改但暂时还不想提交的文件:

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

但是,当我再次点击 Push 时,出现了如下报错:
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 中输入以下命令:
git push -f origin main
之后,就推送成功了。
网硕互联帮助中心

![打卡信奥刷题(2806)用C++实现信奥题 P4084 [USACO17DEC] Barn Painting G-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/02/20260207054926-6986d26629a91-220x150.png)




评论前必须登录!
注册