git-rm - Git add 取り消し - Gitでファイルをアンステージする方法が2つあるのはなぜですか?

Git rm --cached / git / git-reset

gitは、ファイルのステージングを解除するために git rm --cached を提案する場合もあれば、 git reset 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
#ブランチマスター上
#
#初期コミット
#
#追跡されていないファイル:
#(「gitadd <file> ...」を使用して、コミットされる内容に含めます)
#
# a
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 <file> ..."を使用してステージングを解除します)
#
#新しいファイル:a
#
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
#ブランチマスター上
#追跡されていないファイル:
#(「gitadd <file> ...」を使用して、コミットされる内容に含めます)
#
# 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
#ブランチマスター上
#コミットする変更:
#(「gitreset HEAD <file> ...」を使用してステージングを解除します)
#
#新しいファイル:b
#

Mus



Answer #1

OS rm <file> がファイルを削除するのと同じように、 git rm --cached <file> は、プレーンな git rm <file> が両方を実行するディレクトリからファイルを削除せずに、インデックスからファイルを削除するように思われます。バージョンを削除せずにディレクトリから。