4、撤销修改三场景、删除文件、误删恢复

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

git add前:

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

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • 一种是readme.txt自修改后还没有被git add放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
  • 一种是readme.txt已经被git add放到暂存区后,又在工作区作了修改,现在撤销修改就回到添加到暂存区后的状态
    • 总之,就是让这个文件回到最近一次git commitgit add时的状态

场景2:当你不但改乱了工作区某个文件的内容,还git add到了暂存区时,想丢弃修改

git add后,分两步走:

  • 第一步用命令git reset HEAD <file>,就回到了场景1
  • 第二步按场景1操作。

1、用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD readme.txt

2、此时再用git status查看一下,现在暂存区是干净的,工作区有修改:

3、进入场景1,用git checkout -- file丢弃工作区的修改。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,尝试版本回溯,前提:没有推送到远程库。

删除文件

删除工作区文件:一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:

$ rm test.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了,其中标红了这么一条:

$ git status
deleted:    test.txt

两种操作

1、绝情!彻底删除版本库的该文件

  • 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

  • $ git rm test.txt
    $ git commit -m "remove test.txt"
    

2、是误删!我要从版本库下载这个文件的最新版本

$ git checkout -- test.txt

注:只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

上一篇:模板 - 数学 - 同余 - 扩展欧几里得算法/ExtendEuclideanAlgorithm


下一篇:拓展欧几里得—青蛙的约会