我有一个包含大量二进制垃圾的 GitLab 存储库(很遗憾,清理不是一种选择)。我只需要一个实际上只有文本文件的子目录。我需要获取该文件夹 AFAP。
现在我发现git archive
并认为我所有的问题都解决了。不过,它似乎不接受哈希参考。有没有办法检索版本/子目录的特定组合git archive
?
我有一个包含大量二进制垃圾的 GitLab 存储库(很遗憾,清理不是一种选择)。我只需要一个实际上只有文本文件的子目录。我需要获取该文件夹 AFAP。
现在我发现git archive
并认为我所有的问题都解决了。不过,它似乎不接受哈希参考。有没有办法检索版本/子目录的特定组合git archive
?
我认为这个用例必须非常有限。您正在寻找一些文件的快照,没有历史背景或写回更改的能力。好吧,好吧……
当您archive
与--remote
您一起使用时,几乎必须从参考中拉出。 如果您可以将标签推送到远程,您可以标记您想要的版本,然后您应该能够从该标签中提取。如果你不能这样做——如果你想要的版本没有标签或者是当前分支的负责人——那么你可能不走运。
即便是这样,文档也很草率。归根结底,您可以随心所欲地决定服务器是否会在这里为您提供帮助。git 模型并没有真正为子存储库级别的远程访问提供太多支持。
您可能会使用一些部分解决方案,具体取决于此 repo 膨胀的组织方式:
您可以使用浅层和/或单分支克隆。您仍然必须至少为您想要的版本提取完整的 TREE,但您可以最小化(或可能消除)历史记录和不相关版本的文件的提取。
即使您无法清理原始存储库,但如果您要经常阅读此子树的版本,则可能值得使用filter-branch
withsubdirectory-filter
来创建仅包含子树历史记录的存储库;然后从原始仓库中的“下一个”提交中删除子树,将其替换为对新仓库的子模块引用。(但如果只是一次拉动,这显然不值得麻烦。)