我的git存储库中有一堆修改过的文件,其中很多都是xml文件。如何还原仅xml文件的更改(重置修改)?
答案 0 :(得分:50)
您不需要find
或sed
,您可以使用通配符,因为git了解它们(不依赖于您的shell):
git checkout -- "*.xml"
引号将阻止shell在执行命令之前将命令扩展为当前目录中的文件。
您还可以禁用shell glob扩展(使用bash):
set -f
git checkout -- *.xml
这当然会无可挽回地抹掉你的变化!
答案 1 :(得分:4)
谢谢大家的回复,但我找到了最准确的解决方案:
git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --
sed是用户逃离困扰xargs的空间,一切都非常快速和准确。
答案 2 :(得分:0)
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD
如果您的系统没有find
和xargs
,请使用或等效内容。或者只是git checkout HEAD **/*.xml
中的zsh
或任何其他具有这种形式的请求游戏的shell。