38

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

4

3 に答える 3

67

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

git checkout -- "*.xml"

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

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

set -f
git checkout -- *.xml

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

于 2013-02-13T22:44:36.813 に答える
5

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

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

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

于 2013-02-13T23:22:04.797 に答える
1
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD

または、システムにとがない場合は同等のfindものxargs。または、この形式の要求的なグロブを備えたシェルgit checkout HEAD **/*.xml内またはその他のシェル。zsh

于 2013-02-13T22:45:25.930 に答える