【问题标题】:Fetch minimum path [duplicate]获取最小路径[重复]
【发布时间】:2017-11-02 17:52:12
【问题描述】:

我有一个包含大量二进制垃圾的 GitLab 存储库(很遗憾,清理不是一个选项)。我只需要一个实际上只有文本文件的子目录。我需要获取那个文件夹 AFAP。

现在我找到了git archive,并认为我的所有问题都已解决。 不过,它似乎不接受哈希参考。有没有办法用git archive 检索版本/子目录的特定组合?

【问题讨论】:

  • 什么意思“不接受哈希引用”git archive some-commit -- path/to/folder 应该可以工作
  • git upload-archive !== git archive 明确提及 git archive […] <tree-ish> [<path>…​] 作为其用法。
  • git archive 使用 git upload-archive 例如--remote 选项。
  • 好吧,在那种情况下,文档明确指出“客户端可能不会使用其他 sha1 表达式”,所以你真的无能为力。

标签: git git-archive


【解决方案1】:

我认为这方面的用例一定非常有限;您正在查看一些文件的快照,没有历史背景或写回更改的能力。好吧,好吧……

当您使用 archive--remote 时,您几乎必须从 ref 中提取。 如果您可以将标签推送到远程,您可以标记您想要的版本,然后您应该能够从该标签中提取。如果你做不到——如果你想要的版本没有标签或者是当前分支的负责人——那么你可能就不走运了。

即使是这样,文档也很草率;归根结底,您可以随心所欲地决定服务器是否会在这里为您提供帮助。 git 模型并没有真正对子存储库级别的远程访问提供太多支持。

您可能会使用一些部分解决方案,具体取决于此 repo 膨胀的组织方式:

您可以使用浅层和/或单分支克隆。您仍然必须至少为您想要的版本提取完整的树,但您可以最小化(或可能消除)历史记录和不相关版本的文件的提取。

即使您无法清理原始存储库,但如果您要经常阅读此子树的版本,可能值得使用 filter-branchsubdirectory-filter 来创建仅包含历史记录的存储库子树;然后从原始仓库中的“下一个”提交中删除子树,将其替换为对新仓库的子模块引用。 (但如果只是一次性拉取,这显然不值得麻烦。)

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 2013-02-24
    • 2019-07-10
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多