git rm --cached
命令可将文件标记为待删除状态,但不会从工作目录中删除该文件。因此,该文件将被视为未跟踪的文件。
进行试驾
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
使用 git reset <file>
命令可以取消暂存文件。在上面的示例中,您可能希望使用 git reset test
命令来取消暂存删除操作。
git reset test
git status
On branch master
nothing to commit, working directory clean
使用带有标志 git rm --cached
的命令会将文件从索引中删除,但保留在工作目录中。这告诉 git
不再跟踪该文件。
另一方面,命令 git reset HEAD <file>
将文件保留为索引中的已跟踪文件,但索引中缓存的修改内容将丢失。这会导致缓存中的文件好像被 HEAD 中的文件覆盖了(同时工作树中的文件不变)。
清除缓存,请执行以下命令:
git rm -r --cached .
HEAD
中没有<file>
,则两个命令等效。如果HEAD
中有<file>
,则git reset HEAD <file>
将取消暂存该文件,而git rm --cached <file>
将暂存该文件以便删除。 - user4003407