Git撤销错误commit

1、背景

新手程序员,对git一直玩不明白,一直会commit错自己的代码。

有的时候写自己的东西要push代码回去在另一台电脑上继续写,但是又不想保留自己的中间那次没用的commit,所以就有了这篇文章。

2、介绍

对于我们本地的代码,在commit后发现自己commit操作有误:commit了不想提交的代码/......

这时候只需要:

git reset --soft HEAD~1

注意:这里的soft会保留本地的代码,如果你使用hard,那么本地的代码也会变为上一次commit的内容

如果你手残,不小心把这个操作执行了两次,本来需要的commit也被你撤销了,那么只需要:

git reflog

这个命令可以查看你最近的操作记录和每个提交的SHA-1哈希值。

image-20230822222248383

查看到了SHA-1哈希值,使用如下的命令回滚到你需要的commit:

git reset 哈希值 --soft

此时你会发现,如果你reset的commit还没有push,那么在IDEA中,该commit就消失了,很好,这时候你就已经完成了。

但是,如果你需要撤销的commit已经push了,那么问题就来了:

在IDEA的Git中你依然能看见该commit,但是颜色不一致,代表你本地的代码版本覆盖到蓝色部分

image-20230822222752132

你需要强制push,来覆盖远端的那次commit:

image-20230822222924674

如果你使用IDEA的Push,会有如下提示:

这代表你当前的代码本地版本号小于远程版本号,push需要进行代码的合并

image-20230822223010425

然而我们不希望本地的push与远端不需要的那次commit进行合并,这样会保留那次不需要commit,所以我们应该使用强制push操作来覆盖:

git push origin <本地分支名>:<远程分支名> -f

强制push成功:

image-20230822223422618

此时再查看IDEA的Git,可以看见不需要的commit已经被撤销了:

image-20230822223452450

posted @   yikolemon  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示