I have a bunch of modified files in my git repository and a large number of them are xml files. How do I revert changes (reset modifications) of only the xml files?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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!
回答2:
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.
回答3:
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.