git reset
git 里的后悔药 git reset
如果我们想让文件内容恢复到指定的commit提交版本,就可以使用git reset命令
比如我们想把文件内容回退到初始化index文件
这次提交,我们首先要用git log命令查看 要回退的提交的commit id是多少
可以看到初始化index文件
那次提交的commit id是08bf08ab7a7c51af52804b89c7e26cb8d8a91073
现在我们开始执行回退操作,版本号没必要写全,前几位就可以了,Git会自动去找
现在我们查看下index.html的内容是否
good!文件内容已经变到我们第一次提交的内容
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD
指针,当你回退版本的时候,Git仅仅是把HEAD从指向回退的版本
因此我们还可以通过指定HEAD,告诉git去回退几步
HEAD^ 表示把HEAD向后回退1步
HEAD~2 表示把HEAD向后回退2步
HEAD~3 挪几步你应该知道了吧
细心的同学会发现我们在git reset 命令后边加了 --hard参数,这个参数是什么意思呢,接下来我们揭晓git reset 的两种模式:硬重置和软重置
硬重置 --hard
Git 直接将整体状态重置到特定提交之前的状态:这甚至包括你在工作目录中和暂存文件上的修改。
Git 丢弃了 9e78i 和 035cc 引入的修改,并将状态重置到了 ec5be 的状态
软重置 --soft
软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后加入的修改!
输入 git status 后,你会看到我们仍然可以访问在之前的提交上做过的所有修改。这很好,这意味着我们可以修改这些文件的内容,之后再重新提交它们
如果你通过git reset --hard把文件回退到以前的版本之后,你发现回退错了,想恢复到新版本怎么办,不要着急,你只需要找到新版本的commit id就行
通过我们上节介绍的git reflog命令可以查看已经被删除的版本提交的commit id
从log可以看出我们最新的提交是新增一行div
,其commit id前几位是f42e369
接下来我们让文件内容回到这个版本
再看一下index.html文件内容
新增div又回来了✨✨✨,git就是这么cool
现在你已经具备了使用git穿梭到过去,然后再回到现在的能力了
最后更新于
这有帮助吗?