すべてのファイルをgit checkout


127

リポジトリのすべてのファイルのすべての変更を取り除くにはどうすればよいですか?

私がブランチにいて、いくつかの変更を加えたとしましょう。git status「変更はコミット用にステージングされていません」で一連のファイルを返し、すべてのファイルでこれらの変更をすべて削除したいと思います。単一のコマンドでこれを行うにはどうすればよいですか?

次のようにして、1つのファイルのみをチェックアウトできます。

git checkout -- <file>

git checkout --単独ですべてのコミットされていないファイルのリストを返すことに気づきました。しかし、私はそれらすべてをチェックアウトする方法を見つけることができませんgit checkout --all

調べたところman git checkout何も見つかりませんでした。また、Git:1つ除くすべてのファイルをチェックアウトしてみましたがgit checkout .、いずれも動作しませんでした。

git checkout --出力をループして、プログラムで行う必要がありますか?

回答:


193

作業ディレクトリのルートにgit checkout -- .いる場合は、現在のHEAD内のすべてのファイルをチェックアウトして、ローカルファイルを置き換えることができます。

git reset --hard作業ディレクトリをリセットして、すべての変更(インデックスを含む)を置き換えることもできます。


2つのオプションは同等ですか(HEADにリセットした場合)?
lucidbrot 2017

10
いいえ、違いがあります。たとえばgit checkout -- .、インデックスの状態の変更のみをリセットします。したがって、すでにインデックスにファイルを追加している場合は、それがリセットされます。一方git reset --hard、インデックスも破棄されます。たとえば、追跡されていないファイルが(追跡を開始するために)インデックスに追加されている場合、それらも削除されます。git checkoutまた、非常に便利な特定のパスを渡すことで、作業ディレクトリを部分的にのみ復元することもできます。
突く


4
@pokeこんにちはポーク、私はきっとgitのチェックアウト-。動作しません。ステージングされていない複数の変更を試してみました。
アマン

2
同じ結果を達成するための他のコマンド:git checkout --forcegit reset --hard
tjalling '17

3

私が便利だと思った他の方法は:

git checkout <wildcard> 

例:

git checkout *.html

より一般的には:

git checkout <branch> <filename/wildcard>

1
シェルでグロビングが有効になっていて、作業ディレクトリーに追跡されていないファイルがある場合、アスタリスクをエスケープしない限り、これは失敗します(例:git checkout \*または)git checkout '*'
ジョシュクーリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.