【Git】Git撤銷add操作

Git add錯了文件怎麼辦?可以查看以下兩篇
https://git-scm.com/book/zh/v1/Git-基礎-記錄每次更新到倉庫
https://git-scm.com/book/zh/v1/Git-基礎-撤消操作

我們來實踐一下

查看Git狀態

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .idea/misc.xml
        modified:   .idea/modules.xml
        modified:   app/app.iml

只要在 “Changes to be committed” 這行下面的,就說明是已暫存狀態。也就是說這些文件被add過,但是沒有commit。如果此時提交,那麼該文件此時此刻的版本將被留存在歷史記錄中。
但是這些文件是被.ignore忽略的,所以我們應該取消add

git reset HEAD <路徑/文件名> 就是對某個文件進行撤銷了

測試下

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .idea/modules.xml
        modified:   app/app.iml

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:   .idea/misc.xml

文件misc.xml 出現在 “Changes not staged for commit” 這行下面,說明已跟蹤文件的內容發生了變化,但還沒有放到暫存區。

因爲.idea/misc.xml已經被.ignore忽略了,所以對它的修改完全沒有必要,我們看到剛纔的輸出界面在第二個括號中,我們看到了拋棄文件修改的命令,試一下

$ git checkout -- .idea/misc.xml

git reset HEAD 如果後面什麼都不跟的話 就是上一次add 裏面的全部撤銷了

$  git reset HEAD
Unstaged changes after reset:
M       .idea/modules.xml
M       app/app.iml

我們再用git checkout -- <路徑/文件名>

$ git checkout -- .idea

這樣就摒棄了.idea文件夾裏的文件修改

我們可以同樣操作其他文件夾,最後用git status查看下狀態

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章