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