--cached
Use this option to unstage and remove paths only from the index.
Working tree files, whether modified or not, will be left alone.
但根据this resource取消暂存文件
git reset HEAD <file>
有什么区别?有吗?
答案 0 :(得分:6)
使用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
答案 1 :(得分:1)
git rm --cached从索引中删除该文件,但将其保留在工作目录中。这向Git表明您不想再跟踪该文件。
git reset HEAD将文件作为索引中的跟踪文件,但索引中缓存的修改将丢失。这就好像缓存中的文件已被HEAD中的文件覆盖(并且工作树文件未被触及)