Git使用教程-6.撤销修改

2021-09-22  本文已影响0人  小杨同学97

撤销修改

Git 比其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改,而非文件。

您会问,什么是修改? 比如您新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

撤消对文件的修改

  1. 我们先在README.md文件后面添加一些内容,然后使用git status命令查看当前状态

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ cat README.md
    Hello Git!
    Git is free software.
    Git is a distributed version control system.
    very good!
     
    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
01.png
  1. 假如,这时候你发现改错了,并且不知道原来的内容是什么了,那么我们要怎么恢复文件内容呢?这时候我们可以丢弃对工作区文件的修改。

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git restore README.md
    
     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git status
     On branch master
     nothing to commit, working tree clean
    
02.png

取消暂存的文件

  1. 假设现在你修改了一段代码并且git add到暂存区,然后你发现这段代码有bug。

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ cat README.md
    Hello Git!
    Git is free software.
    Git is a distributed version control system.
    This is a bug.
    
    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git add README.md
    
    
  2. 庆幸的是,在 commit 之前,您发现了这个问题。用 git status 查看一下,修改只是添加到了暂存区,还没有提交:

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            modified:   README.md
    

    Git告诉我们,用命令git restore --staged <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

    03.png

特别说明,旧版本的git使用的是git reset HEAD <file>命令来把暂存区的修改撤销掉(unstage).git reset还可用于版本回退,新版本使用git restore可以把版本回退区分开来。

  1. 撤销暂存区的修改后,然后使用git status命令查看当前状态。

     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git restore --staged README.md
    
     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git status
     On branch master
     Changes not staged for commit:
       (use "git add <file>..." to update what will be committed)
       (use "git restore <file>..." to discard changes in working directory)
             modified:   README.md
    
     no changes added to commit (use "git add" and/or "git commit -a")
    

    现在只是工作区有修改,如果我们不想保留修改了,继续使用git restore丢弃修改即可。

    04.png
上一篇 下一篇

猜你喜欢

热点阅读