我希望git中有类似于Mercurial's Bigfiles Extension的内容(注意:我知道git-bigfiles,但这是无关的)。
基本上我想在我的git存储库中存储大型二进制文件,但是当我进行克隆时,我不希望得到大型二进制文件的每个版本。我只想在签出包含那些大文件的特定修订时下载大型二进制文件。
答案 0 :(得分:5)
以下是一些需要考虑的选项:
浅层克隆:您可以将--depth <depth>
参数添加到git clone
以获取存储库的浅层克隆。例如如果<depth>
为1,则表示克隆仅获取最近提交所需的文件。但是,正如git clone
手册页中所述,此类存储库对您可以对它们执行的操作进行了尴尬的限制:
--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上的README:http://github.com/schacon/git-media时对此进行了描述。
浅子模块:您可以将所有大文件保存在单独的git存储库中,并将其作为shallow submodule添加到主存储库中。这样做的好处是,您没有代码的浅克隆限制,只有大文件的存储库。
还有很多方法可以通过在git hooks中添加(例如)rsync来覆盖大文件的钩子来实现这一点,但我认为你有充分的理由希望将这些文件保存在git的控制之下第一名。
我希望能有所帮助。