Git撤销错误commit
1、背景
新手程序员,对git一直玩不明白,一直会commit错自己的代码。
有的时候写自己的东西要push代码回去在另一台电脑上继续写,但是又不想保留自己的中间那次没用的commit,所以就有了这篇文章。
2、介绍
对于我们本地的代码,在commit后发现自己commit操作有误:commit了不想提交的代码/......
这时候只需要:
git reset --soft HEAD~1
注意:这里的soft会保留本地的代码,如果你使用hard,那么本地的代码也会变为上一次commit的内容
如果你手残,不小心把这个操作执行了两次,本来需要的commit也被你撤销了,那么只需要:
git reflog
这个命令可以查看你最近的操作记录和每个提交的SHA-1哈希值。
查看到了SHA-1哈希值,使用如下的命令回滚到你需要的commit:
git reset 哈希值 --soft
此时你会发现,如果你reset的commit还没有push,那么在IDEA中,该commit就消失了,很好,这时候你就已经完成了。
但是,如果你需要撤销的commit已经push了,那么问题就来了:
在IDEA的Git中你依然能看见该commit,但是颜色不一致,代表你本地的代码版本覆盖到蓝色部分
你需要强制push,来覆盖远端的那次commit:
如果你使用IDEA的Push,会有如下提示:
这代表你当前的代码本地版本号小于远程版本号,push需要进行代码的合并
然而我们不希望本地的push与远端不需要的那次commit进行合并,这样会保留那次不需要commit,所以我们应该使用强制push操作来覆盖:
git push origin <本地分支名>:<远程分支名> -f
强制push成功:
此时再查看IDEA的Git,可以看见不需要的commit已经被撤销了:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!