从提交中签出所有以特定扩展名结尾的文件

时间:2017-06-22 18:55:19

标签: git

我知道如何从提交中签出一个文件。

git checkout a0b1c3d -- path/to/some/file.txt

我也知道如何从提交中签出多个文件。

git checkout a0b1c3d -- path/to/some/file.txt path/to/another/file.txt

我们如何查看以特定扩展名结尾的所有文件?我尝试过以下方法:

git checkout a0b1c3d -- *.txt
git checkout a0b1c3d -- */**/*.txt

都没有工作。两个命令都没有检查,即使有* .txt文件要从指定的提交签出。

Checkout all files from a previous commit with a certain file name表示pathspec可能存在错误。

2 个答案:

答案 0 :(得分:0)

使用命令替换可以在存储库中获取具有给定扩展名的所有文件。 git ls-treegrep可以做到这一点。

结果文件列表可以传递到git checkout

您可以使用以下命令检出扩展名为a0b1c3d的文件txt版本:

git checkout a0b1c3d -- $(git ls-tree --full-tree --name-only -r HEAD | grep .txt)

答案 1 :(得分:0)

引用该glob,以便您的外壳将其传递给Git,而不是扩展自身:

git checkout -- \*.txt

对我来说效果最佳,它检出了所有.txt文件(无论在任何级别,请参见git帮助中忽略git的路径名匹配规则)