6

我想要 git 中类似于Mercurial 的 Bigfiles Extension 的东西(注意:我知道git-bigfiles,但这是不相关的)。

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

4

1 回答 1

5

以下是一些可供考虑的选项:

浅克隆:您可以添加--depth <depth>参数以git clone获取存储库的浅克隆。例如,如果<depth>是 1,这意味着克隆将只获取最近提交所需的文件。git clone但是,如手册页中所述,此类存储库对您可以使用它们执行的操作有一些尴尬的限制:

        - 深度
           创建一个浅克隆,其历史被截断为指定
           修订数量。浅层存储库有许多
           限制(您不能克隆或从中获取,也不能从
           进入它),但如果你只对最近的感兴趣
           历史悠久的大型项目的历史,并希望
           作为补丁发送修复。

事实上,正如在这个线程中所讨论的那样,这有点言过其实——在某些有用的情况下,从浅层克隆推送仍然有效,并且可能适合您的工作流程。

Scott Chacon 的“git media”扩展:作者在回答这个类似问题和 github 上的 README 中描述了这一点:http: //github.com/schacon/git-media

浅子模块:您可以将所有大文件保存在单独的 git 存储库中,并将其作为浅子模块添加到主存储库中。这样做的好处是您的代码没有浅克隆的限制,只有带有大文件的存储库。

也有许多方法可以通过添加钩子(例如)从 git 钩子中对大文件进行 rsync 来执行此操作,但我认为首先有充分的理由希望将这些文件置于 git 的控制之下.

我希望这会有所帮助。

于 2010-07-02T08:10:03.213 回答