代码之家  ›  专栏  ›  技术社区  ›  davr

Git Analog to Hg的bigfiles扩展名?

  •  6
  • davr  · 技术社区  · 14 年前

    我想要一些类似于 Mercurial's Bigfiles Extension (注:我知道 git-bigfiles 但这是无关的)。

    基本上,我想在Git存储库中存储大型二进制文件,但我不想在克隆时获取大型二进制文件的每个版本。我只想在签出包含这些大文件的特定修订版时下载大的二进制文件。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Community CDub    7 年前

    以下是一些需要考虑的选项:

    浅克隆 :您可以添加 --depth <depth> 参数到 git clone 以获取存储库的浅克隆。例如如果 <depth> 是1,这意味着克隆将只获取最近提交所需的文件。但是,如中所述,这些存储库对您可以使用它们做什么具有笨拙的限制。 Git克隆 人页:

            --depth 
               Create a shallow clone with a history truncated to the specified
               number of revisions. A shallow repository has a number of
               limitations (you cannot clone or fetch from it, nor push from nor
               into it), but is adequate if you are only interested in the recent
               history of a large project with a long history, and would want to
               send in fixes as patches.
    

    事实上,正如 this thread 这有点过分强调了——在一些有用的情况下,从一个浅显的克隆进行推送仍然有效,并且有可能适合您的工作流程。

    Scott Chacon的“Git Media”扩展 :作者在回答 this similar question 在Github的自述文件中: http://github.com/schacon/git-media .

    浅子模块 :您可以将所有大型文件保存在单独的Git存储库中,并将其作为 shallow submodule 到您的主存储库。这样做的好处是,您不必为代码设置浅显克隆的限制,只需设置具有大文件的存储库即可。

    还有很多方法可以做到这一点,例如,通过在Git钩子中的大文件上添加rsync钩子,但我认为有充分的理由可以让这些文件首先由Git控制。

    希望能有所帮助。

    推荐文章