自然,你是不會犯錯的。不過現在是凌晨兩點,你正在趕乙份工作報告,你在readme.txt
中新增了一行:
[root@node1 git]# cat readme.txtgit
isa distributed version control system.
git
isfree software distributed under the gpl.
git has a mutable index called stage.
git tracks changes of files.
my stupid boss still prefers svn
在你準備提交前,一杯咖啡起了作用,你猛然發現了「stupid boss」可能會讓你丟掉這個月的獎金!
[root@node1 git]# git statu# on branch master
# changes not staged
forcommit:
# (use
"git add ...
"to update what will be committed)
# (use
"git checkout -- ...
" to discard changes in
working directory)
## modified: readme.txt
#no changes added to commit (use
"git add
" and/or "
git commit -a
")
你可以發現,git會告訴你,git checkout -- file
可以丟棄工作區的修改:
[root@node1 git]# git checkout -- readme.txt
命令git checkout -- readme.txt
意思就是,把readme.txt
檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt
已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態
總之,就是讓這個檔案回到最近一次git commit
或git add
時的狀態
檢視readme.txt 的檔案內容
[root@node1 git]# cat readme.txtgit
isa distributed version control system.
git
isfree software distributed under the gpl.
git has a mutable index called stage.
git tracks changes of fiels.
檔案內容果然復原了
git checkout -- file
命令中的--
很重要,沒有--
,就變成了 「切換到另乙個分支」 的命令
現在假定是凌晨3點,你不但寫了一些胡話,還git add
到暫存區了
[root@node1 git]# git status# on branch master
# changes to be committed:
# (use
"git reset head ...
"to unstage)
## modified: readme.txt
git同樣告訴我們,用命令git reset head file
可以把暫存區的修改撤銷掉(unstage),重新放回工作區:
[root@node1 git]# git reset head readme.txtunstaged changes after reset:
m readme.txt
git reset
命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head
時,表示最新的版本。
再用git status
檢視一下,現在暫存區是乾淨的,工作區有修改:
[root@node1 git]# git status# on branch master
# changes not staged
forcommit:
# (use
"git add/rm ...
"to update what will be committed)
# (use
"git checkout -- ...
" to discard changes in
working directory)
## modified: readme.txt
#no changes added to commit (use
"git add
" and/or "
git commit -a
")
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file
。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file
,就回到了場景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已經新增...