自然,你是不會犯錯的。不過現在是凌晨兩點,你正在趕乙份工作報告,你在readme.txt
中新增了一行:
在你準備提交前,一杯咖啡起了作用,你猛然發現了stupid boss
可能會讓你丟掉這個月的獎金!
你可以發現,git會告訴你,git checkout -- file
可以丟棄工作區的修改:
命令git checkout -- readme.txt
意思就是,把readme.txt
檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt
已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit
或git add
時的狀態。
git checkout -- file
命令中的--
很重要,沒有--
,就變成了「切換到另乙個分支」的命令,我們在後面的分支管理中會再次遇到git checkout
命令。
現在假定是凌晨3點,你不但寫了一些胡話,還git add
到暫存區了:
慶幸的是,在commit
之前,你發現了這個問題。用git status
檢視一下,修改只是新增到了暫存區,還沒有提交:
git同樣告訴我們,用命令git reset head
可以把暫存區的修改撤銷掉(unstage),重新放回工作區:
git reset
命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head
時,表示最新的版本。
再用git status
檢視一下,現在暫存區是乾淨的,工作區有修改:
還記得如何丟棄工作區的修改嗎?
整個世界終於清靜了!
現在,假設你不但改錯了東西,還從暫存區提交到了版本庫,怎麼辦呢?還記得版本回退一節嗎?可以回退到上乙個版本。不過,這是有條件的,就是你還沒有把自己的本地版本庫推送到遠端。還記得git是分布式版本控制系統嗎?我們後面會講到遠端版本庫,一旦你把stupid boss提交推送到遠端版本庫,你就真的慘了……
又到了小結時間。
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file
。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head
,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。
git 修改 撤銷
git status 初始狀態是,什麼都沒有修改 on branch master nothing to commit working directory clean 修改了乙個檔案fu 狀態變成 root 172.18 4.100 gitlearn git status on branch mas...
Git撤銷修改
撤銷修改 加入在readme中加入了不想要的語言,在沒提交之前,使用 git status 檢視可以得到如下 遇到這種情況可以手動刪除,也可以使用 git checkout file命令丟棄工作區的修改。如圖,新的文件中取出了新增的部分。git checkout readme.txt會遇到兩種情況。...
git 撤銷修改
命令 git checkout file 命令git checkout readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態 一種是readme.txt已經新增...