たとえば、ワークスペースに test.html という新しいファイルを作成し、次に git status を実行します。
git は、この新しく追加されたファイルを検出し、追加するように求めます。ストレージ領域を一時的に追加します。
次を実行します:
git restart --hard
git のステータスを確認してください:
まだです。ファイルが追加されたばかりの git status ヒント、新しく追加された test.html は削除されていません。
今すぐ実行します:
git add dist/test.html
git ステータスの表示:
新しく追加した test.html を一時保存領域に置き、次のコマンドを実行します:
git restart --hard
もう一度 git ステータスを見ると、ワークスペースとステージング領域はすべてクリーンで、新しく追加された test.html も消えています。
2 つの操作の違いを要約します。
新しい test.html ファイルも作成します
1 つ目は、直接 git restart --hard を作成することです。 new test.html ファイルはワークスペースに保持されます
2 番目の方法は、最初にこの新しい test.html ファイルを追加し、それを一時記憶域に追加してから、git restart です。 --hard の場合、ワークスペース内の test.html ファイルも削除されます。
git replace --hard が最後に送信されたレコードでワークスペースとステージング領域を上書きする場合、最初のケースでは test.html を削除する必要があります。 git replace --hard が追跡されていないファイルを処理しない場合、2 番目のケースでは、test.html はワークスペースから削除されません。
私はすでにめまいがして git の応答を待っています。これはおそらく git のバグだと思います。
git replace --hard は、ステージング領域とワークスペースの内容を HEAD が指すバージョンにリセットします。
つまり、2 番目のケースでは、ステージング領域と作業領域の test.html が失われています。
最初のケースについては、最初の画像をよく見ると、test.html が Untracked ファイルであることがわかります。これは、ファイルが追跡されていないことを意味するため、もちろん削除されません。
リーリー
git reset
それはステージ領域と作業領域に影響します (あなた自身が言いました)。つまり、Git にバグがあるということではなく、基本的な概念を理解していないということです。1. ステージング領域を元に戻すには、git restart を使用します。
2. ワークスペースを元に戻すには、git checkout を使用します。