38

我的 git 存储库中有一堆修改过的文件,其中很多是 xml 文件。如何仅还原 xml 文件的更改(重置修改)?

4

3 回答 3

67

你不需要findor sed,你可以使用 git 理解的通配符(不依赖于你的 shell):

git checkout -- "*.xml"

引号将阻止您的 shell 在执行之前将命令扩展为仅当前目录中的文件。

您还可以禁用 shell glob 扩展(使用 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

或等效的东西,如果您的系统没有findand xargs。或者只是git checkout HEAD **/*.xmlzsh这种形式的 reqursive globbing 中或任何其他 shell 中。

于 2013-02-13T22:45:25.930 回答