HOWTO · Git

Git RM -- キャッシュと Git リセット ファイルの違い

この記事では、git rm --cached コマンドと git reset file コマンドの違いについて説明します。

このページの内容

この記事では、git rm --cached コマンドと git reset<file> コマンドの違いについて説明します。 2つの違いを理解するために、各コマンドの機能について説明します。

git rm --cached と git reset<file> の違い

コンテキストをわかりやすくするために、各コマンドが実行できることを調べてから、2つのコマンドが表示するさまざまな出力を分析します。 すぐに飛び込みましょう。

git rm --cached コマンド

git status コマンドを実行した後、Git が以下の提案を表示することがあります。

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   .env

rm オプションを使用して .env ファイルのステージングを解除してみましょう。 以下を実行します。

$ git rm --cached .env

git status コマンドを実行して、作業ディレクトリの状態を確認しましょう。

$ git status

出力:

git rm –cached image

上記の出力から、.env ファイルは削除されましたが、追跡されていないファイルの下に残っていることがわかります。 git reset<file> コマンドが何をするか見てみましょう。

git reset <file> コマンド

以下に示すように、git reset コマンドを実行します。

$ git reset HEAD .env

git status コマンドを実行して、作業ツリーをチェックアウトできます。

$ git status

出力:

git reset image

上記の出力から、git reset <file> コマンドによって、ファイルに加えられた変更が取り除かれていることがわかります。

git rm --cached コマンドは、削除のためにファイルをステージングしますが、ファイルは追跡されません。 一方、git reset <file> コマンドは、ファイルのステージングを解除するだけです。

git rm --cached オプションは、作業ツリーを変更せずに追跡されていないファイルのステージングを解除したい場合に最適です。 対応するコマンド git reset <file> は、作業ツリーではなくインデックスをリセットします。

簡単に言えば、git rm --cached コマンドはインデックス内のパスを削除して追跡しないままにし、git rest<file> コマンドはインデックスのみをリセットします。 追跡されていないファイルで git rm --cached コマンドを使用します。