git はコミットされていない、または保存されていないすべての変更を元に戻す 質問する

git はコミットされていない、または保存されていないすべての変更を元に戻す 質問する

前回のコミット以降のすべての変更を元に戻そうとしています。試してみたところgit reset --hardgit reset --hard HEADこの郵便受けヘッドは現在 18c3773 にあります... という応答が返されますが、ローカル ソースを確認すると、すべてのファイルがまだそこにあります。何が足りないのでしょうか?

ベストアンサー1

  • これにより、ステージングした可能性のあるすべてのファイルがステージング解除されますgit add

      git reset
    
  • これにより、コミットされていないローカルの変更がすべて元に戻ります (リポジトリのルートで実行する必要があります)。

      git checkout .
    

    特定のファイルまたはディレクトリに対してのみコミットされていない変更を元に戻すこともできます。

      git checkout [some_dir|file.txt]
    

    コミットされていないすべての変更を元に戻す別の方法 (入力には時間がかかりますが、どのサブディレクトリからでも機能します):

      git reset --hard HEAD
    
  • これにより、追跡されていないローカル ファイルがすべて削除され、 git で追跡されたファイルのみが残ります。

      git clean -fdx
    

    警告: は、 -x !で指定されたファイルも含め、無視されるファイルもすべて削除します。削除するファイルのプレビューには を.gitignore使用することをお勧めします。-n


まとめると、以下のコマンドを実行することは、基本的にgit clone元のソースから新しくダウンロードするのと同じです (ただし、何も再ダウンロードしないので、はるかに高速です)。

git reset
git checkout .
git clean -fdx

これは、通常、ビルド スクリプトで使用されます。ビルド スクリプトでは、ツリーが完全にクリーンである (変更やローカルで作成されたオブジェクト ファイルやビルド アーティファクトが一切ない) ことを確認する必要があり、非常に高速に動作させて、毎回リポジトリ全体を再クローンしないようにする必要があります。

おすすめ記事