git rm --cached file vs git reset file
101,551
git rm --cached <file>
will completely remove the file's contents from the index. This means that on commit the file will be removed from the HEAD
commit. (If the file was only added to the index and not yet tracked this is a "no-op".)
git reset -- <file>
resets the contents of the file in the index to be the same as the head commit. This means that on commit no changes will be committed to the file. This operation is not valid if there is no tracked version of the file in the HEAD
commit.
Author by
Vihaan Verma
Updated on July 05, 2022Comments
-
Vihaan Verma almost 2 years
I'm trying to learn Git. I'm confused between
git rm --cached file
and
git reset file
both of the commands seem to take the file from staged to un-staged area. How do the commands differ?
-
poke over 11 yearsMaybe as an addition:
git rm --cached
will add the delete action of the file to the index, just likegit add
will add an add action. -
ataulm about 11 yearsIs index==staging area? If a file is in the index, isn't it tracked by extension?
-
Naga Kiran about 10 yearsFor git reset -- <file>, there should be a tracked version of that file in HEAD commit. If it's new file added to index, then there will be no tracked version in HEAD commit
-
navidoo almost 10 yearsSo
git reset
doesn't reset the index to what it was right after the last commit, namely empty. It keeps the list of staged files, but resets their contents to that of the last commit. Therefore,git reset
isn't the opposite of (doesn't undo)git add
. -
bubakazouba almost 9 yearsis there a way to view files that are in the index? (even if they match the HEAD)
-
legends2k about 5 years@bubaka I think you're looking for
git ls-files -s
. It lists all the files in the index, whether staged or not. What it shows will be what will be put in to your next commit.