【Git第九節】撤銷修改
歡迎大家來到自學Python編程教室,上一講我們學習了如何移除文件,這一講我們來學習如何撤銷修改,你準備好了嗎?
前面說了,如果你手滑刪掉了一個文件,可以用 Git 幫你找回來。同樣,如果一個文件被你改來改去面目全非,直到程序無法運行,你累感不愛想要回到開始的狀態,Git 也可以幫你輕松搞定。
我們現在直接把 readme.txt 從文件夾中刪除。看一下狀態:
# On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: readme.txt # o changes added to commit (use "git add" and/or "git commit -a")
注意其中有一句提示:
use "git checkout -- <file>..." to discard changes in working directory
用 git checkout -- <file> 命令舍棄工作目錄中的修改。注意 checkout 后面的 --,沒有這兩個減號就是另一條命令了,后面關于分支的時候會去說它。
那我們就來試一下:
git checkout -- readme.txt
看看文件夾中,消失的文件是不是又回來了?再看下 git status,也回到了沒有產生修改的狀態。
那么,如果一個修改后的文件已經被暫存了,要如何恢復到之前的狀態呢?
我們來改一下 readme.txt,在文件中加點字,然后 git add 添加到暫存區。查看狀態:
# On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: readme.txt #
這里 Git 又給出提示了:
use "git reset HEAD <file>..." to unstage
用 git reset HEAD <file> 命令撤銷暫存。
git reset HEAD readme.txt
這條命令并不會更改 readme.txt 里的內容,修改仍然存在,但是文件的狀態變回到已修改。
# On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: readme.txt # o changes added to commit (use "git add" and/or "git commit -a")
你可以修改了重新暫存,也可以用前面的方法把文件恢復。
再進一步,如果文件修改已經被 commit 了,要如何撤銷?
一種情況是,你提交了之后發現還漏了幾個地方沒有改,或者提交的文件中有些小錯誤,想要撤銷回來重新提交。那么你可以用 git commit --amend 來重新提交。
做完修改、暫存之后,運行
git commit --amend
會開啟文本編輯器讓你修改上次的提交注釋,或者通過 -m 參數直接指定。保存退出后,這一次的改動就會被直接加上上一次的提交里,不會產生新的 commit。
你也許覺得,直接再提交一次不就好了。但難免有時候不想因為筆誤產生過多提交。再說,程序員調試代碼的時候總會有些惡趣味,諸如 print 'believe spring brother' 之類的調試語句,如果最后忘了刪干凈就提交了,肯定不想再做一次提交去刪除。還是直接神不知鬼不覺地清理掉比較好。
還有另一種情況,就是整個上一次的提交你都不想要了,希望回退到上一個提交狀態。這時候就需要用到版本回退了。
恭喜您在Python自學的道路上又堅持了一天,今天跟大家聊的如何撤銷修改文件的相關內容,你都學會了嗎?
好啦,今天的分享到這里就結束了,希望大家持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!
聲明:文章來源于網絡,侵刪!