検索

ホームページ  >  に質問  >  本文

奇妙な git の問題です。分析を手伝ってください。

たとえば、ワークスペースに 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 のバグだと思います。

我想大声告诉你我想大声告诉你2794日前568

全員に返信(3)返信します

  • 高洛峰

    高洛峰2017-05-02 09:35:59

    git replace --hard は、ステージング領域とワークスペースの内容を HEAD が指すバージョンにリセットします。
    つまり、2 番目のケースでは、ステージング領域と作業領域の test.html が失われています。
    最初のケースについては、最初の画像をよく見ると、test.html が Untracked ファイルであることがわかります。これは、ファイルが追跡されていないことを意味するため、もちろん削除されません。

    返事
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:35:59

    リーリー

    git reset それはステージ領域と作業領域に影響します (あなた自身が言いました)。つまり、Git にバグがあるということではなく、基本的な概念を理解していないということです。

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-02 09:35:59

    1. ステージング領域を元に戻すには、git restart を使用します。
    2. ワークスペースを元に戻すには、git checkout を使用します。

    返事
    0
  • キャンセル返事