Git使用教程-6.撤销修改
2021-09-22 本文已影响0人
小杨同学97
撤销修改
Git 比其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改,而非文件。
您会问,什么是修改? 比如您新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
撤消对文件的修改
-
我们先在
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")
-
假如,这时候你发现改错了,并且不知道原来的内容是什么了,那么我们要怎么恢复文件内容呢?这时候我们可以丢弃对工作区文件的修改。
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
取消暂存的文件
-
假设现在你修改了一段代码并且
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
-
庆幸的是,在 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告诉我们,用命令
03.pnggit restore --staged <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区:
特别说明,旧版本的git使用的是
git reset HEAD <file>
命令来把暂存区的修改撤销掉(unstage).git reset
还可用于版本回退,新版本使用git restore
可以把版本回退区分开来。
-
撤销暂存区的修改后,然后使用
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")
现在只是工作区有修改,如果我们不想保留修改了,继续使用
04.pnggit restore
丢弃修改即可。