我希望在git中有类似于Mercurial的Bigfiles扩展的东西(注意:我知道git-bigfiles,但那与此无关)。
基本上,我想在我的git仓库中存储大型二进制文件,但我不想在克隆时获取每个版本的大型二进制文件。我只想在检出包含这些大文件的特定修订版本时下载这些大型二进制文件。
我希望在git中有类似于Mercurial的Bigfiles扩展的东西(注意:我知道git-bigfiles,但那与此无关)。
基本上,我想在我的git仓库中存储大型二进制文件,但我不想在克隆时获取每个版本的大型二进制文件。我只想在检出包含这些大文件的特定修订版本时下载这些大型二进制文件。
git clone
命令中添加 --depth <depth>
参数,以获取存储库的浅克隆。例如,如果 <depth>
为 1,则意味着该克隆将仅获取最近提交所需的文件。但是,这种存储库有一些限制,如 git clone
手册中所述:
--depth 创建一个浅克隆,其历史记录被截断到指定的修订次数。浅存储库有许多限制(您不能从中克隆或提取,也不能从其中推送或推入),但如果您只对具有悠久历史的大型项目的最近历史感兴趣,并且想要发送修复程序作为补丁,则它足够了。
实际上,正如在此线程中所讨论的那样,这有点言过其实 - 在某些情况下,从浅克隆中推送仍然有效,而且可能适合您的工作流程。
Scott Chacon 的 "git media" 扩展:作者在此类似问题的回答中和 github 上的 README 中描述了这一点:http://github.com/schacon/git-media 。 浅子模块: 您可以将所有大文件存储在单独的 git 存储库中,并将其作为浅子模块添加到主存储库中。这样做的优点是您的代码不会受到浅克隆的限制,只有包含大文件的存储库受到限制。还有许多通过添加挂钩来完成的方法(例如从 git 挂钩中 rsync 大文件),但我认为您希望首先将这些文件纳入 git 的控制下有很好的理由。
希望这对您有所帮助。