【学了就忘】Git后悔药 — 34.版本回退操作(三)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【学了就忘】Git后悔药 — 34.版本回退操作(三)相关的知识,希望对你有一定的参考价值。

参考技术A

git reset --hardcommit-id 命令:回退到指定版本。(hard:强硬,严格的回退)

该命令不仅移动了分支中HEAD指针的位置,还将工作区和暂存区中数据也回退到了指定的版本。

(提示:该命令慎用。)

示例开始:

首先在版本库中的 readme.txt 文件中添加一行内容,并提交该内容。我们的目的就是要再回退到该版本。

1)查看本地版本库日志

2)向 readme.txt 文件中新增一行数据,并提交到本地版本库

3)现在比对工作区与暂存区、暂存区与本地版本库的差异

我们可以看到此时,工作区、暂存区与本地版本库中的 readme.txt 文件状态无差异。

4)开始回退操作,退回到V3版本

使用 git reset --hard HEAD^ 命令,退回到前一个版本。

说明:

HEAD is now at 529ad74 第3次提交,新增内容:readme.txt file v3

意思:HEAD现在位于commit-id为 529ad74 的提交,提交说明为: 第3次提交,新增内容:readme.txt file v3 。

5)回退后,对比工作区、暂存区与本地库中版本中文件的差异

回退后,我们再次对比了工作区、暂存区与本地库中版本中文件的差异:没有内容差异,完全一样。

说明:工作区、暂存区和本地库中的内容,都回退到了之前的版本。(重要)

6)查看本地版本库的提交日志信息

从上我们可以看到:(重点)

7)恢复到回退前版本

上面说了,使用 git reset --hard 命令回退,做了三个操作:

我们现在来查看一下工作目录中的文件状态。

可以看到工作目录中是非常干净的。

所以若要恢复到回退之前的版本,只能使用 git reset --hard 命令回退。

我们查看到, readme.txt 文件的内容已经完全恢复。

【学了就忘】Git操作 — 14.Git基本操作(一)

参考技术A

要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行 git init 命令即可。

准备一个新的Git本地版本库:

说明:初始化Git仓库后,在当前目录下会出现一个名为 .git 的目录,所有Git需要的数据和资源都存放在这个目录中。

不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

使用 git status 命令进行查看。

进入本地版本库查看工作区、暂存区中文件的状态。

1)创建文件后查看工作区、暂存区中文件的状态

我们在仓库目录中创建一个 readme.txt 文件后,在执行 git status 命令。

说明:

2)将工作区的文件添加到暂存区

执行 git add 命令,将 readme.txt 文件添加到暂存区。

3)再次查看工作区、暂存区状态

执行 git status 命令查看工作区、暂存区状态。

说明:

总结:

只要在 "Changes to be committed" 这行下面显示的文件,就说明是已暂存状态。

如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。

在 git add 命令后面可以指明要跟踪的文件或目录路径。

如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实 git add 命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)

4)将文件从暂存区撤回到工作区

执行 git rm --cached 命令,将 readme.txt 文件从暂存区撤回到工作区。

并执行 git status 命令查看工作区、暂存区状态。

可以看到结果, readme.txt 文件又成为了一个未被Git追踪的文件。

以上是关于【学了就忘】Git后悔药 — 34.版本回退操作(三)的主要内容,如果未能解决你的问题,请参考以下文章

【学了就忘】Git后悔药 — 38.revert撤销(二)

【学了就忘】Git操作 — 51.git reflog命令

【学了就忘】Git操作 — 56.忽略文件补充

【学了就忘】Git操作 — 14.Git基本操作(一)

【学了就忘】Git操作 — 55.忽略文件的三种方式

【学了就忘】Git操作 — 62.rebase命令执行原理