Git入门教程4-撤销更改
Table of Contents
撤销更改 #
上一节我们学习了 git 提交版本只需要简单的 3 步,那么有时候我们需要撤销一些更改。
撤销更改的策略往往会取决于你是在什么状态需要撤销,撤销到什么状态。
添加前撤销 #
假如我们继续进行昨天的项目,可是写了半天发现写错了,需要返回到昨天提交的版本的状态。如果没有 git 你可能需要手动去ctrl z
撤销,这样有可能导致很多错误,多次出现问题的你可能就会每天备份一次代码。
如果你想退回到昨天的版本,并且你还没有添加修改的代码在暂存区,此时你运行git status
看到 git 提示你哪些文件更改了,并建议你使用git add <file>
将文件假如暂存区,这一状态我们应该很熟悉了。
此时你要做的,仅仅是git check -- <file>
,这时再运行git status
就会发现工作区状态是干净的,而且你的代码恢复到上一个版本的状态了。
不过,你需要注意的是,今天的更改就丢失了,所以我更倾向于建议你保留这个错误版本甚至可以新建一个错误分支,然后通过版本回退(后面会讲到)返回昨天的状态。
提交前撤销 #
假如我们修改了某文件,已经 add 到了暂存区,想要撤销怎么办呢?
其实聪明的你会在发现如果在git add <file>
之后输入git status
就会看到以下提示:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test.txt
这里已经有了撤销操作了就是git reset HEAD <file>
,这个命令和版本回退很相似,HEAD
其实就表示距离我们最近的提交版本。
这是我们就会退到添加之前了,也就是git add
命令运行之前。此时,如果想要继续撤销就变成了添加前撤销的情况了。
提交后撤销 #
每提交一次,git 就会为我们保存相应的一个版本信息,如果我们已经提交新版本了希望撤销,那问题就变成了版本回退问题。下节我们会详细说明。
建议大家写项目的时候多提交,这样相当于我们拥有项目从无到有的很多状态的快照,我们就可以在这些状态之间穿梭,这对于解决 bug 重现 bug 和学习都有很大的帮助。
所以,多让 git 帮我们记忆点东西吧!
本系列文章使用Gitbook
编写,并发布在 http://gitstart.zcong.win