1. ホーム
  2. git

[解決済み] Gitでファイルのステージを解除する方法が2つあるのはなぜですか?

2022-03-15 11:34:09

質問

時々、git は git rm --cached を使用してファイルをアンステージすることもあれば git reset HEAD file . どのような場合に使用するのでしょうか?

EDIT

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

D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       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
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new 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
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       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
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   b
#

解決方法は?

git rm --cached <filePath> を解除しない は、実際には ファイルの削除を段階的に行う をレポから削除し、作業ツリーにはそのファイルを残します (追跡されていないファイルを残します)。

git reset -- <filePath> 意志 舞台を外す 指定されたファイルのステージングされたすべての変更。

とはいえ、もしあなたが git rm --cached をステージングされた新しいファイルに適用すると、基本的にそのファイルはそれまでコミットされていなかったので、ステージングを解除したように見えるでしょう。

git 2.24のアップデート
この新しいバージョンのgitでは git restore --staged の代わりに git reset . 参照 ギット・ドックス .