Git 常用的几种处理大型二进制文件的组件

简介:

screenshot

Git大文件存储(Large File Storage,简称LFS)的目标是更好地把“大型二进制文件,比如音频文件、数据集、图像和视频”集成到Git的工作流中。众所周知,Git在存储二 进制文件时效率不高,因为:Git默认会压缩并存储二进制文件的所有完整版本,如果二进制文件很多,这种做法显然不是最优。因此,在Git仓库处理大量的二进制文件似乎是很多Git用户的瓶颈。由于Git的分散性,这意味着每个开发人员对文件的操作是变化的,对二进制文件的更改导致Git仓库文件不断变化增长。当数据文件需要恢复的时候,这就变成一个很难操作的问题。存储虚拟机映像的快照,改变其状态,并存储新的状态到Git仓库将与各自的快照的大小约为成长库的大小。如果这是你的团队每天的日常运作,你可能已经感受到来自过度肿胀Git仓库的痛苦。

本文将介绍几种常用的处理大型二进制文件的组件,旨在为你解决上述问题。

Git annex : 允许映射 Git 资料库到文件,Git annex 采用 Haskell Script 编写。

Git LFS : 一个命令行扩展和规范用于利用Git来管理大文件。其客户端采用Go开发,为Mac, Windows, Linux, and FreeBSD提供预编译好的binaries。

Git bigfiles : 提供了Python接口,允许用户处理没有存储在Git上的大文件。

优点:

Git 操作可以回滚。

可以设置文件大小的阈值,以限定“大文件”这个概念。

缺点:

存在兼容性问题。

Git fat : 可以简单的处理一些比较大的文件,而无需提交到Git。同时,Git-fat 也支持 rsync 同步处理。

优点:

使用透明

缺点:

仅支持rsync的作为后端。

Git media : 可能是可供选择的最古老的多媒体处理方案。 Git media使用类似过滤器,并支持亚马逊的S3,本地文件系统路径,SCP,ATMOS和WebDAV作为后端存储大文件。 Git media是用Ruby编写的。

优点:

支持多种后端
使用透明

缺点:

不再发展。
含糊的命令(e.g. git update-index --really refresh))。
并不完全与Windows兼容。

Git bigstore : 最初实现是作为 Git media 替代品。它支持Amazon S3的,谷歌云端存储或Rackspace公司云帐户作为后端存储二进制文件。Git bigstore 提高协同开发时的稳定性。 Git bigstore是根据Apache 2.0许可授权。Git bigstore是用Python编写,需要Python2.7以上的运行环境。

优点:

仅需要Python2.7以上运行环境

使用透明

缺点:

目前只支持基于云存储。

Git sym : 是一款通过git符号链接的进行大文件处理的软件,其目的是从修订控制中分离出庞大的文件缓存。

结论:

有多种方式来处理Git仓库大型二进制文件,其中许多人使用几乎相同的工作流程和方法来处理这些文件。然而,一些解决方案都不再积极开发,因此,选择一个有技术支持的解决方案尤为重要。如果Windows支持或透明度是一个必须具备的条件,你最好选择Git LFS,因为它会被长期支持。

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

目录
相关文章
|
5月前
|
存储 前端开发 开发工具
Git Hooks实战:提交前检查修改文件中是否包含调试代码
Git Hooks实战:提交前检查修改文件中是否包含调试代码
93 0
|
5月前
|
缓存 Shell 开发工具
git 基本 使用和.gitignore文件不生效
git 基本 使用和.gitignore文件不生效
99 0
|
11天前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
41 1
git学习三:git使用:删除仓库,删除仓库内文件
|
10天前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
28 4
|
17天前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
31 1
|
5月前
|
开发工具 git
如何使git提交的时候忽略一些特殊文件?
如何使git提交的时候忽略一些特殊文件?
|
2月前
|
缓存 开发工具 git
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
本文介绍了如何为Git仓库添加`.gitignore`文件来排除不需要跟踪的临时文件,并展示了如何删除已经被提交的临时文件缓存,以清理Git仓库中的不必要文件。
181 0
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
|
2月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
195 1
|
3月前
|
开发工具 git
git如何不上传指定的文件或文件夹
【7月更文挑战第9天】平时写代码的时候有很多测试文件或者静态文件,没必要上传到git上,不仅占资源更新还麻烦,以下介绍如何忽略不需要上传的文件或文件夹。
343 8
|
3月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
66 0

相关实验场景

更多