我在我的git存储库中有很多被修改过的文件,其中很多是xml文件。我如何还原(重置修改)仅限于xml文件的更改?
我在我的git存储库中有很多被修改过的文件,其中很多是xml文件。我如何还原(重置修改)仅限于xml文件的更改?
你不需要find
或sed
,你可以使用通配符,因为git可以理解它们(不依赖于你的shell):
git checkout -- "*.xml"
这些引号将防止您的shell在执行命令之前将其扩展为当前目录中的文件。
您还可以禁用shell glob扩展(使用bash):
set -f
git checkout -- *.xml
当然,这将无可挽回地抹掉你所做的更改!git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --
sed 用于转义空格,以解决 xargs 的问题,提高执行速度和准确性。
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD
find
和xargs
,可以使用类似的替代方法。或者在zsh
或其他支持此种递归全局搜索的Shell中使用git checkout HEAD **/*.xml
。请保留HTML标签。
*/*.xml
并不表示“所有目录中的XML文件”。 - wRAR**/*.xml
将使用您的 shell 通配符,因此已删除的文件不会被检出,但如果只有更改,则应该可以工作。 - Reactormonkgit checkout master -- "*.xml"
不起作用,而git checkout -- "*.xml"
却可以 :-( - mjaggard