4.管理、撤銷、刪除

管理修改
Git的優秀之處是在於跟蹤並管理的是修改,而非文件。
接下來用一個實例來說明:
先對 readme.txt 做修改,

再修改 readme.txt ,然後查看狀態:

這裏發現第二次的修改沒有提交,這是因爲:在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。
提交後,用git diff HEAD -- readme.txt命令可以查看工作區和版本庫裏面最新版本的區別:

每次修改,如果不add到暫存區,那就不會加入到commit中。

撤銷修改
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這裏有兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。
注意:
git checkout -- file命令中的 -- 很重要,沒有 -- ,就變成了“切換到另一個分支”的命令,我們在後面的分支管理中會再次遇到git checkout命令。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
發現了錯誤,還提交到了暫存區

用命令git reset HEAD file可以把暫存區的修改撤銷掉(unstage),重新放回工作區

現在暫存區是乾淨的,工作區有修改。所以只需要再吧工作區的修改丟掉

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,可以使用版本回退的功能,不過前提是沒有推送到遠程庫。

刪除文件
當我們在文件管理器裏面刪除了文件時(或者是用rm命令),代表的是將工作區的文件刪了,而版本庫裏面還沒有,如:

這是Git就會知道文件被刪,並可以提示哪些文件被刪
現在有兩種選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm刪掉,並且git commit

二是刪除錯誤,因爲版本庫裏還有呢,所以可以很輕鬆地把誤刪的文件恢復到最新版本:

git checkout其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。
注意:
命令git rm用於刪除一個文件。如果一個文件已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章