11

私はgit rm --cached推測で混乱しています。
リポジトリとファイルがコミットされています。ファイルを変更して実行しますgit add myfile
。ファイルはステージングされました。
私がするときgit status

# On branch master   
# Changes to be committed:  
#   (use "git reset HEAD <file>..." to unstage)  
#  
#       modified:   com/main/StringMain.java  
#  

これで、ファイルは変更された追跡ファイルになります。だから私はそれがステージングエリアにあると思います。だから、推奨の意味が理解できません(use "git reset HEAD <file>..." to unstage)。だから私はそうしました:git rm --cached代わりにaが続きgit commitます。しかし、これにより、ファイルが追跡されなくなり、追跡されなくなったようです。
もしそうならgit status

# On branch master  
# Untracked files:  
#   (use "git add <file>..." to include in what will be committed)  
#  
#       com/  
nothing added to commit but untracked files present (use "git add" to track)  

それで、何が起こったのですか?

4

3 に答える 3

7

git rm --cachedファイルをインデックスから削除します。

git reset HEADファイルのインデックス バージョンをHEADコミット時の状態にリセットします。

したがって、違いは、最初のファイルが削除され、2 番目のファイルが最後にコミットされたバージョンに戻されることです。


これを確認するgit diffには、作業ツリーをインデックスとgit diff --cached比較し、インデックスをヘッド コミットと比較します。

を実行するgit rm --cachedと、変更されたファイルはインデックスから完全に削除されます。作業ディレクトリと最後のコミットにまだ存在しています。インデックスを最後のコミットと比較すると、次のようになります。

git diff --cached modified_file

変更されたファイルがインデックスに存在しないことがわかります。これは次のように確認されています。

git status

これにより、コミット時に削除がスケジュールされているファイルが表示されます。インデックス内で直接動作するgit rm --cachedため、作業ディレクトリは の影響を受けませんでした。--cached

于 2013-06-15T11:08:40.143 に答える