关于git与git-lfs对文件压缩存储方面的研究

这篇具有很好参考价值的文章主要介绍了关于git与git-lfs对文件压缩存储方面的研究。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先说结论,git使用了Delta增量压缩算法,git-lfs实测没有进行任何压缩,这个结论让我很震惊。

测试过程如下:

测试git仓库自身的压缩

准备一个包含许多杂项文件的文件夹,大概几百M,要保证有一个txt文本文件,做修改用,我们就叫这个文件夹为[数据包]。

将[数据包]压缩为TestFile.zip,我这里压缩结果大小为115M,然后放进本地仓库里。

步骤1、将TestFile.zip进行add、commit然后push到远程仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

步骤2、对[数据包]中的一个txt文件稍做修改,依旧是压缩为TestFile.zip,然后替换掉本地git仓库的同名文件,从而模拟修改,再次执行步骤1。

将步骤1、2这一过程循环执行3遍,这样的话,就意味着有三个115M大小的文件被push到远程仓库中,我们来验证一下远程中央仓库大小:

关于git与git-lfs对文件压缩存储方面的研究,git

如上所示,远程仓库的大小确实是3*115=345M,也就是说,无论你连续几次提交之间的差异有多小,在提交并推送时,远程仓库并不会[立即]进行Delta压缩。

我们再看一下咱们的本地仓库大小:

关于git与git-lfs对文件压缩存储方面的研究,git

本地仓库显示459M,实际也是合理的,因为本地仓库是[工作空间]+[仓库]:

关于git与git-lfs对文件压缩存储方面的研究,git

关于git与git-lfs对文件压缩存储方面的研究,git

好了,下面就是见证git的压缩技术的时候了,我们先在远程中央仓库执行压缩命令git gc:

关于git与git-lfs对文件压缩存储方面的研究,git

压缩完之后,我们再看一下远程仓库的空间大小:

关于git与git-lfs对文件压缩存储方面的研究,git

远程仓库的空间变成了115M,和只传了一个TestFile.zip占用的空间一样,但确实是包含了三次commit的全部历史版本数据,对每次的TestFile.zip文件的修改都能追溯。这说明了如果直接用git管理大文件,在历次对大文件的修改不大的前提下,git的Delta压缩会极大的节约空间,因为只保留历次文件修改之间的区别。

我们再对本地仓库进行下git gc看看:

关于git与git-lfs对文件压缩存储方面的研究,git

结果和远程仓库一样,除了工作空间不受影响以外,仓库空间被极大的压缩,但同样在小体积的同时保留了所有对于TestFile.zip文件的历次修改。

关于git与git-lfs对文件压缩存储方面的研究,git

好了,以上就是git自身对于仓库文件的压缩,下面,咱们再看git-lfs,我原本以为git-lfs作为专为管理大文件而生的git扩展,自然有对空间管理这方面的牛b之处,没想到一番测试下来大跌眼镜。

首先分别给远程中央仓库与本地仓库进行lfs的初始化:

命令:git lfs install

远程中央仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

本地仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

然后再从本地仓库执行以下命令git lfs track "*.mp4",让git-lfs负责管理.mp4格式的文件:

关于git与git-lfs对文件压缩存储方面的研究,git

接下来将上面命令所生成的git-lfs配置文件.gitattributes推送到远程仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

上面都妥当之后,就该咱们的老朋友TestFile.zip登场了,他将继续作为测试git-lfs大文件夹存储压缩方面的关键人。

TestFile.zip:唉?不对啊,你上面不是配置了只让git-lfs管理mp4文件吗?怎么还是我?

作者:你改下后缀名不就是个mp4了嘛!

TestFile.mp4:哦~,也是哦,真有你的……

好了,那就把[数据包]中的txt文件内容稍作修改,依旧压缩为TestFile.zip,然后改后缀名为TestFile.mp4,复制到本地仓库中:

关于git与git-lfs对文件压缩存储方面的研究,git

步骤1、将TestFile.mp4进行add、commit然后push到远程仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

步骤2、对[数据包]中的一个txt文件稍做修改,依旧是压缩为TestFile.zip,然后依旧是改后缀名为TestFile.mp4,然后替换掉本地git仓库的同名文件,从而模拟修改,再次执行步骤1。

 将步骤1、2这一过程循环执行3遍,这样的话,就意味着有三个115M大小的文件被push到远程仓库中,我们来验证一下远程中央仓库大小:

 关于git与git-lfs对文件压缩存储方面的研究,git

我们发现远程仓库的大小还是115m,那是因为远程仓库上的git仓库与存储大文件的lfs仓库路径是不同的,在部署gitea托管平台的时候会设置lfs的路径,所以我们到lfs路径下去看看:

关于git与git-lfs对文件压缩存储方面的研究,git

然后我们看一下本地仓库,之前的三个TestFile.zip文件还是存放在objects文件夹下,还是占用114m,而lfs管理的mp4文件是存放到了新增加的lfs文件夹下了,三个mp4文件,3*115=345m:

关于git与git-lfs对文件压缩存储方面的研究,git

好了,我们现在照猫画虎,依旧是分别在远程仓库与本地仓库执行git gc命令进行仓库压缩,看看会发生什么:

远程仓库:

关于git与git-lfs对文件压缩存储方面的研究,git

本地仓库:

同样是没有任何变化:

关于git与git-lfs对文件压缩存储方面的研究,git

关于git与git-lfs对文件压缩存储方面的研究,git

不是,合着你git lfs是一点压缩也不干啊?哪怕三个文件就只有一个字节的区别,你也是存三份?

git lfs:是啊,那我不就省下了压缩与解压缩的时间,不就更快了嘛!

我:我特么……

结论

就跟上面的实验一样,如果你的大文件会经常性的修改,你还是别用git lfs了,哪怕你一次只做一个字节的修改,git lfs也会完整的给你存一份,压缩空间?只存增量?不存在的。你要是经常改动某些大文件,git lfs仓库所在的服务器容量分分钟给你挤爆了。当然,你要说你服务器容量管够,当我没说。

那么哪些文件适合放进git lfs,我觉得要同时满足这两点:

1、很大

2、永远不会修改

如果不能同时满足这两点,劝你还是老老实实用git吧,或者用svn。

另外可能有些对git lfs有所了解的朋友会说:唉,不对啊,我记得git lfs有一个命令[git lfs prune]可以压缩空间啊。

那我只能遗憾的告诉你,这条语句不会对远程中央仓库产生半点影响,它只是暂时的将你本地用不到的lfs缓存文件给删除掉,中央服务器中依然是存储着过去的commit对于lfs缓存文件历史版本的引用。也就是说你本地删除掉的东西,随时都能从中央仓库down回来。

再次追加

我这两天又在外网上查阅了不少关于git-lfs的相关资料,最后得出结论:

不要用git-lfs

不要用git-lfs

不要用git-lfs

实际上git-lfs的唯一好处就是可以让使用人员在clone仓库时不用下载所有文件,仅此而已,但随着这两年git的更新,也可以实现clone时不下载所有内容了,所以git-lfs的唯一优势也基本没有了。

在stack上上有关于这点的详细讨论,有兴趣的可以去看看:

git lfs - How does git LFS track and store binary data more efficiently than git? - Stack Overflow

 git lfs - Do I need Git LFS for local repos? - Stack Overflow文章来源地址https://www.toymoban.com/news/detail-799415.html

到了这里,关于关于git与git-lfs对文件压缩存储方面的研究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何用Git-LFS上传与下载大文件资源

    1.下载Git-LFS 2.安装到git目录下(根据你自己的git目录选择,若未安装git,先安装git) 2.1注册github完成访问网址,点击头像 点击个人简介即可进入进入个人主页  个人主页会显示仓库,点击右上角头像 2.2点击Your repositories 2.3点击NEW 2.4填写项目名称,描述,并添加README 点击创

    2024年04月22日
    浏览(26)
  • 如何下载github上用git-lfs工具下载的大文件

    要下载 GitHub 上使用 Git LFS 工具存储的大文件,您可以进行以下步骤: 安装 Git LFS:如果您的系统上没有安装 Git LFS,请先安装它。可以通过终端或命令行进行安装。 克隆存储库:使用以下命令克隆项目存储库到本地: 下载大文件:进入存储库目录,并使用以下命令下载大文

    2024年02月12日
    浏览(47)
  • huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件

    huggingface官网链接:https://huggingface.co/ 以stable-diffusion-inpant为例:模型链接为stable-diffusion-inpant 点击clone repository,可以发现提供了两种下载方式,方式一为HTTPS,代码如下,然而国内使用代理访问的时候采用这种方式会报错:Failed to connect to huggingface.co port 443 after 127293 ms: Cou

    2024年01月19日
    浏览(98)
  • 安装git-lfs时出现Unable to locate package git-lfs的解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月05日
    浏览(40)
  • Git LFS【部署 01】Linux环境安装git-lfs及测试

    Git LFS(Large File Storage)是一个用于Git版本控制系统的扩展,它专门用来管理大型文件,如图像、音频和视频文件。 安装包下载页面:https://github.com/git-lfs/git-lfs/releases 根据系统信息下载对应的安装包: 本次下载的为: git-lfs-linux-amd64-v3.4.1.tar.gz 下载一个大模型文件: 复制的

    2024年03月18日
    浏览(39)
  • 有Root与无Root安装git-lfs

    先查看arm还是AMD 例如当前使用Rocky Linux 8.8版本的内核。因此,应该下载适用于Rocky Linux 8.x的Git LFS安装包。 您可以按照以下步骤在Rocky Linux上安装Git LFS: 打开终端或命令提示符窗口。 使用以下命令下载适用于Rocky Linux 8.x的Git LFS安装包: 下载安装包后,使用以下命令安装Gi

    2024年02月16日
    浏览(38)
  • git-lfs安装及clone常见问题

    1.  安装git for windows-3.20版本,报错Could not find git; can not register Git LFS。 错误原因:可能这个版本有问题。参考:Could not find Git; can not register Git LFS. · Discussion #5031 · git-lfs/git-lfs · GitHub 解决方式:安装Git for Windows 2.36.1 2. 报错fatal: unable to access ‘https://github.com/.......‘: Op

    2023年04月08日
    浏览(31)
  • centOs安装git-lfs并下载huggingface模型

    hf模型都是用git-lfs托管的,可以直接git下载的,天才第一步: 1、安装git-lfs 2、直接git clone 3、测试模型opt-1.3b

    2024年02月12日
    浏览(43)
  • linux下安装git-lfs的两种方法

    一、方法一(推荐) 首先安装git-lfs ubuntu版:  centeros版: 然后验证安装成功 若显示: 则安装成功。 二、方法二 从git官网上下载安装包后,手动解压后安装。 详细可参考: 安装 Git Large File Storage - GitHub 文档

    2024年02月07日
    浏览(30)
  • 无root权限安装git-lfs(linux版)

    首先给大家看一下官方链接:安装 Git Large File Storage - GitHub 文档 git-lfs/INSTALLING.md at main · git-lfs/git-lfs (github.com) 直接用这个命令好啦~绕了一大圈 以下是手动安装 接下来是我的步骤: 首先在本地点击此链接下载:https://github.com/git-lfs/git-lfs/releases/download/v3.2.0/git-lfs-linux-amd64-

    2024年01月20日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包