如何递归地检查 GIT 存储库中所有出现的文件名?

How to check out all occurances of a filename from GIT repository recursively?

我有一个 GIT 存储库,每个文件夹及其子文件夹中都有一个 build.xml 文件。我只需要在与存储库中相同的目录结构中检出那些 build.xml 文件。文件夹结构会随着时间的推移而修改,所以我希望解决方案是动态的。

一种选择是签出整个存储库,然后删除 build.xmls 以外的所有文件。但我想保留它作为最后的选择。有没有更好的方法或一条线来完成任务?

即使 GIT 未跟踪签出的骨架目录结构,我也可以接受该解决方案。

对您来说最简单的事情就是执行以下步骤:

1) 将目录更改为本地 Git 存储库的根目录(其中包含各种 build.xml 文件)

2) git pull origin branch 使您的本地回购文件(包括 build.xml 文件)与远程

保持同步

3) 然后有选择地将 build.xml 文件从 repo 复制到新位置:

find . -name 'build.xml' -exec cp --parents \{\} /new_location \;

上面的 find 命令会将整个目录结构移动到 /new_location,在本例中是根目录下的一个目录。

根据您的 Linux 抱负,您也许可以创建一个脚本来自动执行所有这些操作。