3.使用git进行版本回退、撤销修改

本文详细介绍了在Git中如何进行版本回退,包括未commit到仓库和已commit到仓库的情况,以及撤销暂存区和工作区的修改。特别强调了谨慎操作的重要性及找回丢失版本的方法。
摘要由CSDN通过智能技术生成

由于时间精力有限,自本篇开始,本专栏后续的博文将会进行一定程度的精简,不会连篇累牍地介绍命令和基础知识,如有需要,请访问廖雪峰的git教程

1.使用git进行版本回退

版本回退主要是针对于以下两种状态:

  1. add到本地仓库,还未commit到仓库
  2. 已经commit到远程仓库

1.1 未commit到本地仓库

这个时候的版本回退也就是撤销修改,撤销修改之后文件内容会回到最近一次的commit的位置。
当前的文件情况:
在这里插入图片描述
原本的hello.py文件是空的,现在给其加入内容:
在这里插入图片描述
修改了hello.py文件之后,使用git status查看当前状态如下:
在这里插入图片描述
使用如下命令撤销修改:

git checkout -- hello.py

撤销之后再次打开hello.py文件,文件内容被还原如下:
在这里插入图片描述


以上是没有add到暂存区的,如果已经add到暂存区了,
修改hello.py如下并add到暂存区:
在这里插入图片描述
使用git status会提示如下内容:
在这里插入图片描述
这个时候如果想要把add到暂存区的内容给撤销掉,方法与上一个类似,但是多了一个步骤,就是撤销暂存区的修改:

git restore --staged hello.py
git checkout -- hello.py

结果如下:
在这里插入图片描述
可以看到修改内容没有了。

1.2 已经commit到本地仓库

首先使用命令git log查看仓库版本的提交情况,返回结果如下:
在这里插入图片描述
可以看到只有一次提交,提交的初始信息为Initial commit,创建几个空文件,然后进行第二次提交,使用如下命令:

touch main.c
touch hello.py
git add .
git commit -m "第二次提交,增加了main.c和hello.py文件"

返回结果如下:
在这里插入图片描述
接下来再使用git log查看提交历史记录:
在这里插入图片描述
可以看到,本地仓库的提交历史记录中已经有了第二次提交。
使用ls命令查看本地仓库的文件,如下所示:
在这里插入图片描述
红色框框框住的就是第二次创建的文件,如果我们要舍弃这一次的提交commit,使用如下命令进行版本回退

git reset --hard HEAD^

执行之后查看本地仓库情况如下图所示,可以看到第二次提交的内容已经被撤销了,也就是版本回退了。

在这里插入图片描述
最后一个参数HEAD^表示回退一个版本,如果要回退两个版本,可以使用HEAD^^,以此类推,多个版本的时候使用HEAD~100表示回退100个版本。
注意:版本回退是一个有风险的操作,最新的版本数据可能会丢失,所以,请谨慎操作。
如果已经进行了版本回退,但是发现还是新版本的好,这个时候可以尝试如下解决方案:
输入git reflog,查找版本ID,然后进行版本切换
在这里插入图片描述
版本ID就是前面的那一串数字,输入时可以精简一些,一般输入前6位就行,使用如下命令进行回退:

git reset --hard 352f4bb

于是此时就回到了我们最开始的版本。


总结:

  1. 修改了工作区的内容,但是没有add到暂存区,使用git checkout -- XXX进行撤销修改;
  2. 修改了工作区的内容,已经add到了暂存区,首先使用git restore --staged XXX将暂存区的内容撤销,然后使用git checkout -- XXX将工作区的内容撤销;
  3. 修改了工作区的内容,已经add到了暂存区,并且commit到了版本库,此时只能进行版本回退,使用git reset --hard HEAD^回退一个版本,以撤销本次修改。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值