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?

有帮助吗?

解决方案 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.

其他提示

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!

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top