Git

Git 中的各种后悔药

Posted by 暮夏有五 on 2021-01-30
Estimated Reading Time 2 Minutes
Words 814 In Total
Viewed Times

本文将从如下三个方面介绍 Git 中的后悔药:

  1. 工作区的代码想撤销
  2. add 到暂存区的代码想撤销
  3. 提交到本地仓库的代码想撤销

提交到远程仓库的后悔药我们统一都在关联远程仓库一文中讲解,敬请期待。

工作区的代码想撤销


可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过 git checkout -- <file> 命令来撤销工作区的代码修改。如下图:

img

首先我们执行了 git status 命令,发现工作区是干净的,然后执行了 cat 命令,发现文件只有两行内容,然后通过 vi 编辑器向文件中添加一行,保存并退出,退出来之后又执行了 git status 命令,此时工作区的状态已经发生变化,然后我们执行了 git checkout – git01.txt 命令,表示撤销之前的操作,让 git01.txt 恢复到之前的状态,该命令执行成功之后,我们再执行 cat 命令发现文件内容已经恢复了,此时再执行 git status ,状态也恢复了。

add 到暂存区的代码想撤销


如果想要撤销,但是代码已经提交到暂存区了,不用担心,也能撤销,分两个步骤:

1.将暂存区的代码撤销到工作区
2.将工作区的代码撤销(具体操作和’工作区的代码想撤销’一致)

将暂存区的代码撤销,我们可以使用 git reset HEAD 命令来实现。如下图:

img

这里的代码都比较简单,核心的过程就是先执行 git reset HEAD 命令,从暂存区撤销,剩下的操作参考’工作区的代码想撤销’一节。

提交到本地仓库的代码想撤销


同样的,提交到本地仓库的代码一样也可以撤销,我们可以利用 git reset --hard <版本号> 命令来实现版本回退,该命令中的版本号有几种不同的写法:

1.可以使用 HEAD^ 来描述版本,一个 ^ 表示前一个版本,两个 ^^ 表示前两个版本,以此类推。
2.也可以使用数字来代替 ^ ,比如说前 100 个版本可以写作 HEAD~100 。
3.也可以直接写版本号,表示跳转到某一个版本处。我们每次提交成功后,都会生成一个哈希码作为版本号,所以这里我们也可以直接填版本号,哈希码很长,但是我们不用全部输入,只需要输入前面几个字符即可,就能识别出来。

看下面一系列的操作:

通过 git log 查看当前提交日志:

img

.通过 git reset HEAD^^ 向前回退两个版本:

img

查看日志,发现最后一次提交的版本号是 695ce1fe ,利用 git reset –hard 695ce1fe 命令回到回退之前的状态:

img

通过 git reset –hard HEAD~1 回到上一个版本:

img

更多干货请移步:https://antoniopeng.com


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !