Git学习记录04

目录

[toc]

chapter(四)

4.1 如何撤销修改?

git checkout -- file可以丢弃工作区的修改

什么意思呢? 比如说你写错了一行代码或者写错了一句话,我要把它删掉。这是就可以撤销修改了、 让我们实际操作一遍,这样更容易让人理解:

README.txt中写下这句话:Summer is comming!

toto@pc:~/code/testGit$ vim README.txt
toto@pc:~/code/testGit$ cat README.txt
This document is a description!
The name is README.txt!
Summer is comming!

看到这句话我发现不对,要撤销!先git status

toto@pc:~/code/testGit$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   README.txt

no changes added to commit (use "git add" and/or "git commit -a")

可以发现README.txt显示被修改,是在工作区。 而且啊,Git已经很人性的告诉我们,可以使用git checkout -- <file>...,把其在工作区撤销掉。

那就用git checkout -- <file>...试下:

toto@pc:~/code/testGit$ git checkout -- README.txt
toto@pc:~/code/testGit$ git status
On branch master
nothing to commit, working tree clean
toto@pc:~/code/testGit$ cat README.txt
This document is a description!
The name is README.txt!

看到没,刚才修改的那个文档已经被撤销了。

有了撤销修改的概念,我们就要分情况了!

  1. 刚刚尝试的是修改的文档还在工作区,并未git add暂存区
  2. 文档已经被git add暂存区
  3. 文档已经被git commitmaster

4.2 撤销修改情况2

撤销修改情况2是指:文档已经被git add暂存区

实践出真理。我们直接试试:

toto@pc:~/code/testGit$ vim README.txt
toto@pc:~/code/testGit$ cat README.txt
This document is a description!
The name is README.txt!
The Winter is comming!
toto@pc:~/code/testGit$ git add README.txt
toto@pc:~/code/testGit$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   README.txt

我先是vim README.txt在其中添加了一行:The Winter is comming! 然后,将其git add进暂存区 最后,获取了一下状态:git status

可以发现,Git 又已经很贴心的告诉我: 用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),然后放回工作区。

之前在chapter(二)中的版本回退中,我们已经使用过命令git reset HEAD <file>了。 在这里可以把修改的文档从暂存区退回到工作区

toto@pc:~/code/testGit$ git reset HEAD README.txt
Unstaged changes after reset:
M	README.txt
toto@pc:~/code/testGit$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   README.txt

no changes added to commit (use "git add" and/or "git commit -a")
toto@pc:~/code/testGit$ cat README.txt
This document is a description!
The name is README.txt!
The Winter is comming!

仔细看上面的代码展示,就会发现在使用命令git reset HEAD README.txt后,Git提示我们已经将该文件回退到工作区了。 如果我们先把The Winter is comming!这句话撤销掉,那再次执行一下4.1节介绍的内容。 即:使用命令:git checkout -- <file>


4.3 撤销修改情况3

撤销修改情况3是指:文档已经被git commit暂缓区提交给master

这种情况的操作就很简单了:直接使用chapter(二)中的版本回退,即可! 这个前提是:你不能把本地仓库推送到远程仓库

4.4 总结

若在工作区想撤销,可用命令:git checkout -- <file> 将修改文档从工作区撤销;

若在暂存区想撤销,可用命令:git reset HEAD <file> 将修改文档从暂存区撤销到工作区

若在master中想撤销,可用命令:git reset HEAD <file> 将修改文档退回到上一版本。

请我喝咖啡

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,您说多少就多少

打开支付宝或微信扫一扫,即可请我喝咖啡哦