撤銷修改

1.未 git add 的修改

先在在 readme.txt 中添加如下內容:

Git 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 status 查看一下:

$ git status
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

no changes added to commit (use "git add" and/or "git commit -a")

可以發現,Git 會告訴你,git checkout -- file 可以丟棄工作區的修改:

$ git checkout -- readme.txt

命令 git checkout -- readme.txt 意思就是,把 readme.txt 文件在工作區的修改全部撤銷,這里有兩種情況:

一種是 readme.txt 自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是 readme.txt 已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

總之,就是讓這個文件回到最近一次 git commit 或 git add 時的狀態。




2.已 git add 的修改

假如修改了 readme.txt,并且執行了 git add 命令:

Git 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 查看一下,修改只是添加到了暫存區,還沒有提交:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   readme.txt

Git 同樣告訴我們,用命令 git reset HEAD file 可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

$ git reset HEAD 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 <file>..." to update what will be committed)
  (use "git checkout -- <file>..." 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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 自然,你是不會犯錯的。不過現在是凌晨兩點,你正在趕一份工作報告,你在readme.txt中添加了一行: $ cat...
    蕭非子閱讀 642評論 0 51
  • 撤銷修改 比如我現在在readme.txt文件里面增加一行 內容為5555,我們先通過命令查看如下: 在我未提交之...
    八寶君閱讀 6,304評論 0 0
  • 1、了解設計,感受到設計的魅力,培養日常設計的關注,培養設計思維 2、講可用性測試,目標是讓工程師知道有哪些途徑改...
    陳淑玲閱讀 283評論 1 0
  • 列車過紹興,一路江南水鄉風景。河流,稻田 ,村莊和公路。還有田里勞作的農民。
    行攝在路上閱讀 382評論 0 0
  • react native在app開發上的一個優勢就是組件化開發,當有了足夠多的自定義組件后,可以很方便的將這些組件...
    haiyangjiajian閱讀 3,273評論 0 2