git-rm - git rm恢复 - 为什么在Git中有两种方法来解除文件的缓存?

git rm --cached文件夹 / git / git-reset

有时git建议使用 git rm --cached 取消 git reset HEAD file 文件,有时git重置HEAD file。我什么时候应该使用哪个?

D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a

D:\code\gt2>git status
#在分支主管上
#
#初次提交
#
#未跟踪的文件:
#(使用“ git add <文件> ...”包含在将要提交的内容中)
#
# 一种
nothing added to commit but untracked files present (use "git add" to track)

D:\code\gt2>git add a

D:\code\gt2>git status
#在分支主管上
#
#初次提交
#
#要提交的更改:
#(使用“ git rm --cached <文件> ...”取消登台)
#
#新文件:
#
D:\code\gt2>git commit -m a
[master (root-commit) c271e05] a
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a

D:\code\gt2>touch b

D:\code\gt2>git status
#在分支主管上
#未跟踪的文件:
#(使用“ git add <文件> ...”包含在将要提交的内容中)
#
# b
nothing added to commit but untracked files present (use "git add" to track)

D:\code\gt2>git add b

D:\code\gt2>git status
#在分支主管上
#要提交的更改:
#(使用“ git reset HEAD <文件> ...”取消登台)
#
#新文件:b
#

Mus



Answer #1

在我看来, git rm --cached <file> 会从索引中删除文件,而不会从普通 git rm <file> 会同时执行两个操作的目录中删除它,就像OS rm <file> 会删除文件一样从目录中删除,而不删除其版本控制。