【Git】03 撤销 & 版本回退

回退分为三种情况,每种情况对应了我们文件的存储区域

工作区
  |
暂存区
  |
版本区(当前分支)

1、文件可能存放在工作区,没有被Git追踪【红色标记状态】

2、文件可能已经添加到暂存区,没有被Git提交到版本分支中【绿色状态】

3、文件可能已经在版本分支中

1、在工作区的撤销

首先查看Git当前状态:

对我们工作区的文件进行内容更改:

vim text.txt
A new content insert this file...

再次查看,很显然的,更改后的文件,Git就会标记为未追踪的文件

如果要撤销回到最初的样子【这是撤销命令】

git checkout 文件名称

可以查看文件的状态:

之前添加的内容已经没有了,Git仓库状态显示未没有需要提交的,工作树干净

2、在暂存区中的撤销

现在重新添加内容,并且提交到暂存区中:

文件添加进暂存区:

对暂存区的文件撤销,即把文件从暂存区拉回到工作区:

git reset HEAD -- 文件名称

如果撤销所有暂存区的文件,可以:

git reset HEAD -- .

或者直接删除暂存区中的文件:

git rm --cached 文件名称

3、在版本分支中的版本回退:

首先把text.txt文件进行提交,每一次提交代表了一个版本存储在版本分支中:

每一个版本都具有独一无二的版本序列号,例如下图的黄色字符串

SVN是一个服务器集中式的版本控制系统,所有的版本控制统一在SVN中执行

但是Git是一个分布式的版本控制系统,每一个人都有独立的本地仓库

版本不会统一在SVN中,每一个开发者的仓库中的版本号就有可能会一样,这样把版本提交到统一的仓库中就会发生问题

版本冲突,所以为了解决这个问题,Git使用了这种奇特的序列号作为版本号,以防止版本冲突

例如现在最新的版本是第三次提交,而我们希望回退到第二版本或者更早的。。。

首先是回退到上一个版本

这里一共三个版本,最新版本就是第三次提交

执行这个命令以后可以看到,当前的版本到了第二次提交了

git reset --hard HEAD^

如果要回退临近的几个版本,^表示上一个版本,多个^就表示之前的第n个

git reset --hard HEAD^^^^ ...

指令的意思就很明确了,从头开始回退到第N个版本

但是如果我们希望回退到指定的版本,可以声明版本号来回退:

git reset --hard 版本号

原文地址:https://www.cnblogs.com/mindzone/p/13500427.html