How to revert uncommitted changes to files of a certain type in git
Thank you all for your replies, but I have found, for me, most accurate solution:
git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --
sed is user to escape spaces which troubled xargs and everything is working very fast and accurate.
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD
or something equivalent if your system doesn't have find
and xargs
. Or just git checkout HEAD **/*.xml
in zsh
or any other shell with this form of reqursive globbing.
You don't need find
or sed
, you can use wildcards as git understands them (doesn't depend on your shell):
git checkout -- "*.xml"
The quotes will prevent your shell to expand the command to only files in the current directory before its execution.
You can also disable shell glob expansion (with bash) :
set -f
git checkout -- *.xml
This, of course, will irremediably erase your changes!