git撤銷某個文件的修改,分為兩種情況:
1.在工作區修改,但並未提交到暫存區(即並沒有add)。
對於單個文件的撤銷修改而言,使用下面方法。
git checkout -- 文件名
若想撤銷工作區中所有文件的修改,則
git checkout .
注意:git chekcout 是讓文件回到最近一次該文件git commit或git add時的狀態。
2.工作區修改了之后,提交到了暫存區(即add),如何撤銷修改?這里分為兩種情況來說吧。
(1)對於該文件來說,在當前分支上,你還沒有commit過一次。這時候,git status后git給出提示:
是的,使用git rm --cached 文件名
命令來放棄該文件的暫存,這時,你用git status
命令:
表明:test1文件不被git追蹤,並且它是修改的狀態,沒有提交到暫存區。此時,你用git checkout -- file是沒有用的。因為,前面提到過,git checkout -- file是回到最近的一次commit或者add。但是,當前你還沒有一次commit過,並且,add也已經撤銷了,所以Git找不到該文件在以往記錄中的存在。自然沒法用git checkout -- file。
git提示你:該文件在Git目前所知的文件中找不到。
此時,你可以任意的對此文件進行修改了,想好了之后,再提交到暫存區。
(2)對於要撤銷的文件,你已經有了commit的記錄了。
則先:git reset HEAD file讓該文件回到工作區的狀態。
然后:git chekcout -- file即可