撤銷修改分為兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
情況一:工作區修改還未放到暫存區
新增一條my stu...........
$ cat readme.txt
gitisa distributed version control system.
gitisfree software distributed under the gpl.
git has a mutable index called stage.
git tracks changes of files.
my stupid boss still prefers svn.
檢視狀態no changes...........暫存區是乾淨的
$ git status# on branch master# changes not staged for commit:# (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可以丟棄工作區的修改:
$ git checkout -- readme.txt
現在,看看readme.txt的檔案內容:
$ cat readme.txt
gitisa distributed version control system.
gitisfree software distributed under the gpl.
git has a mutable index called stage.
git tracks changes of files.
檔案復原了!!
情況二:修改後放到暫存區還沒提交
$ cat readme.txtgit is a distributed version control system.git is free software distributed under the gpl.git has a mutable index called stage.git tracks changes of files.my stupid boss still prefers svn.
$ git add readme.txt
檢視狀態還未提交
$ git status# on branch master# changes to be committed:# (use "git reset head ..." to unstage)## modified: readme.txt#
git同樣告訴我們,用命令git reset head file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:
$ git resethead readme.txt
unstaged changes after reset:
m readme.txt
git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。
git status檢視一下,現在暫存區是乾淨的,工作區有修改:
$ git status# on branch master# changes not staged for commit:# (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 checkout -- readme.txt
$ git status# on branch master
nothing to commit (working directory clean)
小結場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退
一節,不過前提是沒有推送到遠端庫。
Git 撤銷修改
git commit c head a amend c 如果引數是小寫的 c 增補提交只能針對最後一個提交,如果想更正好幾個提交之前的某個錯誤,則須使用git revert這個命令。反轉已經提交的改動,使用git revert命令,此命令通過在版本庫中建立一個 反向的 新提交來抵消原來提交的改動。通...
Git 撤銷修改
增補提交 git commit c head a amend 增補提交只能針對最後一個提交,如果想更正好幾個提交之前的某個錯誤,則須使用git revert這個命令。反轉提交 反轉已經提交的改動,使用git revert命令,此命令通過在版本庫中建立一個 反向的 新提交來抵消原來提交的改動。通常gi...
git 撤銷修改
1 丟棄工作區的修改 git checkout readme.txt 命令git checkout readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態 一種是...