撤銷修改
Git 比其他版本控制系統(tǒng)設(shè)計得優(yōu)秀,因?yàn)?Git 跟蹤并管理的是修改,而非文件。
您會問,什么是修改? 比如您新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至創(chuàng)建一個新文件,也算一個修改。
撤消對文件的修改
-
我們先在
README.md文件后面添加一些內(nèi)容,然后使用git status命令查看當(dāng)前狀態(tài)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")

-
假如,這時候你發(fā)現(xiàn)改錯了,并且不知道原來的內(nèi)容是什么了,那么我們要怎么恢復(fù)文件內(nèi)容呢?這時候我們可以丟棄對工作區(qū)文件的修改。
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

取消暫存的文件
-
假設(shè)現(xiàn)在你修改了一段代碼并且
git add到暫存區(qū),然后你發(fā)現(xiàn)這段代碼有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 之前,您發(fā)現(xiàn)了這個問題。用 git status 查看一下,修改只是添加到了暫存區(qū),還沒有提交:
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.mdGit告訴我們,用命令
git restore --staged <file>可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū):
03.png
特別說明,舊版本的git使用的是
git reset HEAD <file>命令來把暫存區(qū)的修改撤銷掉(unstage).git reset還可用于版本回退,新版本使用git restore可以把版本回退區(qū)分開來。
-
撤銷暫存區(qū)的修改后,然后使用
git status命令查看當(dāng)前狀態(tài)。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")現(xiàn)在只是工作區(qū)有修改,如果我們不想保留修改了,繼續(xù)使用
git restore丟棄修改即可。
04.png

