git reset HEAD <file>
The basic usage of this command is for unstaging a staged file.
for example:
(base) -a01:testGit $ vim a.txt
(base) -a01:testGit $ 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: a.txt
no changes added to commit (use "git add" and/or "git commit -a")
Figure 1.1
At first, we update a.txt so its status becomes modified and not staged in figure 1.
(base) -a01:testGit $ git add a.txt
(base) -a01:testGit $ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: a.txt
Figure 1.2
Then we run command git add a.txt
to stage this file.
(base) -a01:testGit $ git reset HEAD a.txt
Unstaged changes after reset:
M a.txt
(base) -a01:testGit $ 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: a.txt
no changes added to commit (use "git add" and/or "git commit -a")
Figure 1.3
You can see from the above figure 3, when we run git reset HEAD a.txt
, this a.txt 's status comes back to modified and not staged.