What is the difference between git rm –cached and git reset ?

With git rm --cached you stage a file for removal, but you don’t remove it from the working dir. The file will then be shown as untracked.

Take a test drive

git init test_repo
cd test_repo

touch test
git add test
git commit -m 'Added file test

git rm --cached test

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

        deleted:    test      <---- staged for removal

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test              <-- still in the working dir

With git reset <file> you can unstage a file. In the example above you might want to use git reset test to unstage the removal.

git reset test
git status
On branch master
nothing to commit, working directory clean

Leave a Comment