Вопрос

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