Git 版本回退reset,revert
一、git reset 的用法
简单的来说,git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。
git reset命令 又可以分为git reset --hard xxx
和git reset --soft xxx
以及git reset --mixed xxx
。
为了更好的说明,我们来看一些测试的例子:
原本abc.md
中的内容是:iiiiiiiiii

现在我们更改它的内容为:hello world

执行代码git commit -am "change abc.md"
。
然后我们用git log
查看所有的历史版本:

好了,我们准备把它还原到上一个版本。
执行命令git reset --hard HEAD^
回退版本和命令cat abc.md
输出内容。
*(HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭)*

显然,已经回到了上一个版本。再一次执行git log

发现最新的一个版本change abc.md
已经不见了。
怎么复原最新的版本呢?我们可以使用命令git reflog
,该命令用来记录你的每一次命令。

然后可以记录版本的commit id
,回到最新的版本。
如:git reset --hard 3a169ff
。此时我们再输出abc.md
有:

然后我们再来看看git reset --soft xxx
,该命令将最近一次提交节点的提交记录回退到暂存区。
举个例子:将abc.md
中的数据改成Hello Github
。然后commit
。

突然发现我们将git commit -am "change world to github"
写成了git commit -am "cange world to github"
。所以我们要将本次提交回退到暂存区,再重新把comment补全,进行一次提交。现在执行git reset --soft head^
,就可以重新commit了。

此时的git log
为:

我们顺利的更改了错误。
git reset --mixed xxx
是将最近一次提交节点的提交记录回退到工作区,比如文件多提交了,或者有一个文件漏添加到暂存区而没有在此次提交时使用,这里不多举例子了。
二、git revert 的用法
git revert 的作用是通过创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。
如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
我们使用git revert HEAD
命令就可以创建一个新的版本,此版本与上一个版本相同。

此时cat abc.md
就可以发现输出回到了hello world
。

以下是 git renert 的三种用法
git revert HEAD
:撤销前一次 commitgit revert HEAD^
:撤销前前一次 commitgit revert commit + (commit id)
: 撤销指定的版本,撤销也会作为一次提交进行保存。
三、总结
git reset --soft HEAD^
:将最近一次提交节点的提交记录回退到暂存区git reset --mixed HEAD^
:将最近一次提交节点的提交记录回退到工作区git reset --hard HEAD^
:将最近一次提交节点的提交记录全部清除- git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

Git三大分区
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具