web-dev-qa-db-ja.com

gitで特定のタイプのファイルへのコミットされていない変更を元に戻す方法

Gitリポジトリに変更されたファイルがたくさんあり、それらの多くはxmlファイルです。 xmlファイルのみの変更を元に戻す(変更をリセットする)にはどうすればよいですか?

30
Mujo Osmanovic

返信ありがとうございますが、私にとって最も正確な解決策を見つけました。

git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --

sedは、xargsを悩ませていたスペースをエスケープするユーザーであり、すべてが非常に高速かつ正確に機能しています。

4
Mujo Osmanovic

findまたはsedは必要ありません。gitが理解するようにワイルドカードを使用できます(シェルに依存しません)。

git checkout -- "*.xml"

引用符は、実行前にシェルがコマンドを現在のディレクトリ内のファイルのみに展開するのを防ぎます。

シェルグロブ拡張を無効にすることもできます(bashを使用):

set -f
git checkout -- *.xml

もちろん、これはあなたの変更を取り返しのつかないほど消去します!

54
CharlesB
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD

または、システムにfindxargsがない場合は同等のもの。あるいは単に git checkout HEAD **/*.xmlzshまたはこの形式の要求グロブを備えた他のシェル。

1
wRAR