使用Git管理大型二进制文件

551
我正在寻求处理大型二进制文件的意见,这些文件是我源代码(Web应用程序)所依赖的。我们目前正在讨论几个选择:
  1. 手动复制所有二进制文件。
    • 优点:不确定。
    • 缺点:我强烈反对这种方法,因为在设置新站点/迁移旧站点时会增加错误的可能性。又多了一个障碍。
  2. 使用Git管理所有二进制文件。
    • 优点:消除“忘记”复制重要文件的可能性
    • 缺点:使存储库变得膨胀,并降低了管理代码库、检出、克隆等的灵活性,这将需要相当长的时间。
  3. 分离存储库。
    • 优点:仍然可以快速检出/克隆源代码,并且图像以其自己的存储库进行适当地归档。
    • 缺点:去掉了只有一个Git存储库的简便性。它肯定会引入一些我没有考虑过的其他问题。
您对此有何经验/想法?
还有:有人有使用多个Git存储库并在一个项目中管理它们的经验吗?
这些文件是一个程序的图像文件,该程序使用这些文件生成PDF。这些文件不会经常更改(可能长达数年),但是它们对于程序非常重要。如果没有这些文件,程序将无法正常工作。

29
当需要对二进制文件进行版本控制时怎么办?我在考虑艺术家团队合作处理资产时。 - Dan
3
如果必要的话,你需要权衡可用资源(磁盘、带宽、CPU时间)与所获得的利益之间的平衡。 - pi.
4
请注意,如果没有文件锁定,当多个人需要在同一个二进制文件上工作时,Git 的表现并不理想。 - yoyo
1
请参阅基于git的备份文件bup(https://dev59.com/qmMm5IYBdhLWcg3wFL04#19494211)。 - VonC
1
这里是 http://www.bestechvideos.com/tag/gitcasts - doughgle
显示剩余4条评论
13个回答

2
我正在寻求如何处理依赖于大型二进制文件的源代码(Web应用程序)的意见。您对此有什么经验/想法吗?
我个人遇到了一些云主机上Git同步失败的问题,因为我的Web应用程序二进制数据超过了3GB。当时考虑使用BFT Repo Cleaner,但感觉像是一个hack。自那以后,我开始将文件放在Git之外,而是利用Amazon S3等专门的工具来管理文件、版本和备份。
有没有人有多个Git存储库的经验,并在一个项目中管理它们?
是的,Hugo主题主要是通过这种方式进行管理的。这有点笨拙,但它能够完成工作。
我的建议是为工作选择合适的工具。如果是公司项目并且你正在GitHub上管理代码,请花钱使用Git-LFS。否则,你可以探索更有创意的选择,例如使用区块链进行去中心化、加密的文件存储(file storage using blockchain)
其他值得考虑的选项包括Minios3cmd

1
Git LFS 是答案。
# Init LFS
git lfs install
git lfs track "large_file_pattern"

# Then follow regular git workflow
git add large_file
git commit -m "Init a very large file"
git push origin HEAD

在幕后,git lfs 会创建对你的大文件的引用,并不直接存储在 git 存储库中。
更多信息请参见:https://git-lfs.github.com/

0

看看Camlistore。它并不是真正基于Git的,但我认为它更适合你要做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接