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
出力:
上記の出力から、.env ファイルは削除されましたが、追跡されていないファイルの下に残っていることがわかります。 git reset<file> コマンドが何をするか見てみましょう。
git reset <file> コマンド
以下に示すように、git reset コマンドを実行します。
$ git reset HEAD .env
git status コマンドを実行して、作業ツリーをチェックアウトできます。
$ git status
出力:
上記の出力から、git reset <file> コマンドによって、ファイルに加えられた変更が取り除かれていることがわかります。
git rm --cached コマンドは、削除のためにファイルをステージングしますが、ファイルは追跡されません。 一方、git reset <file> コマンドは、ファイルのステージングを解除するだけです。
git rm --cached オプションは、作業ツリーを変更せずに追跡されていないファイルのステージングを解除したい場合に最適です。 対応するコマンド git reset <file> は、作業ツリーではなくインデックスをリセットします。
簡単に言えば、git rm --cached コマンドはインデックス内のパスを削除して追跡しないままにし、git rest<file> コマンドはインデックスのみをリセットします。 追跡されていないファイルで git rm --cached コマンドを使用します。