如何在git中恢复对特定类型文件的未提交更改

时间:2013-02-13 22:42:06

标签: git git-revert

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

3 个答案:

答案 0 :(得分:50)

您不需要findsed,您可以使用通配符,因为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
如果您的系统没有findxargs,请使用

或等效内容。或者只是git checkout HEAD **/*.xml中的zsh或任何其他具有这种形式的请求游戏的shell。