0

問題があります: まだコミットしておらず、ファイルをインデックス (ステージ) コマンドに追加したとき

git rm --cached <file>  

それを完全にアンステージしています。ここでgit resetは、HEAD コミットがまだないため、使用できないことは明らかです。

しかし、いくつかのファイルをコミットするとき。git rm --cachedそして、変更されたファイル (以前にインデックスに追加されたもの) をアンステージするために実行しようとしましたが、ここで実行するgit status -sと、このファイルが 2 回表示されます (ファイル名 = index.php):

D index.phpファイルは削除されているので、正常です。
?? index.php しかし、追跡されていないかのように 2 回表示されるのはなぜですか?

PS:git resetコミット後にファイルのステージングを解除しています。

4

1 に答える 1

2

git rm --cached <file>ファイル全体をインデックスから削除します。いつも。コミットにファイルのバージョンがない場合HEAD、事実上、このパスのインデックスが一致することを意味しますHEAD(何もない、変更がない) が、HEADコミットにファイルのバージョンがある場合、それは事実上、ファイル。

いずれにせよ、インデックスにファイルのバージョンがないため、ファイルは「追跡されていない」状態になります。(この削除をコミットするコミットが実際に行われるまで追跡されていないと見なすかもしれませんがgit status、作業ツリーをインデックスと比較してステージングされていない変更を確認する場合、追跡されていないと見なされます。)

.gitignoreファイルがパターンに一致しない場合、追跡されていないファイルとして表示されます。これは、 を指定した場合、 がインデックス--cachedに対してgit rmのみ動作し、作業コピーでは動作しない--cachedため、ファイルは作業ツリーにまだ存在するためです。

git reset <file>ファイルのステージングを解除しません。バージョンをインデックスに復元することにより、ファイルへの変更をアンステージします。単純にインデックスからファイルを削除します。つまり、ファイルの段階的な削除ですHEADgit rm --cached <file>

于 2013-05-03T20:04:25.097 に答える