Git推出大文件储存工具Git LFS,但它真的好用吗?

news2024/11/17 6:26:19

在这里插入图片描述

Git LFS(全称为Git Large File Storage,Git大文件存储)被许多团队用来管理和存储大文件。本篇文章将解释Git LFS是什么,它的功能和使用场景,以及它究竟是不是管理大文件的最佳版本控制工具。

什么是Git LFS(Git大文件存储)?

Git LFS是一种开源的Git扩展,用于管理大文件和二进制文件,将它们存储在单独的 “LFS 存储库” 中, 从而让Git存储库保持在一个可管理的规模。

如今,很多的项目都包含代码和二进制资产。将大型二进制文件存储在Git存储库中可能会成为Git用户的瓶颈。

Git LFS存储如何工作?

Git大文件存储使用指针来引用文件,而不是将实际文件或二进制大对象(blobs,一种将二进制文件存储为一个实体的数据类型) 存储在Git存储库本身中。

因此,大文件/二进制大对象不会被直接写入Git存储库,而是被写入一个指针文件。文件/二进制大对象本身会被写入一个单独的服务器,称为LFS存储库。通过这种方式,可以对大文件进行版本控制,以及管理二进制大对象,同时释放Git存储库的空间。

我应该使用Git LFS吗?

如果您需要在Git中管理大文件或二进制文件,那么可以考虑使用Git LFS。(但是,如果您的团队中有美术人员和设计师,需要对他们的大型二进制艺术文件进行版本控制,那么您可能不希望使用Git LFS。关于这一点,我们将在下一节中详细讨论。)

使用Git LFS或其他替代方案的原因是,Git是一种分布式版本控制系统,每个开发人员在本地计算机上都有完整的变更历史记录。对大型二进制文件进行更改会导致什么?每次更改文件并提交后,Git 存储库的规模都会根据文件的大小而增加。这意味着获取文件会花费很长时间,并且很难对这些二进制文件进行版本控制和合并。

因此,每当文件增长时,Git存储库也会增长,这会导致Git用户在检出和克隆存储库时出现性能下降的情况。

Git LFS是为解决这些问题而创建的,但它自身也存在一些问题和限制。

Git LFS的问题

Git LFS虽然有效,但许多使用它的团队发现其管理起来较为困难。以下是考虑寻找Git LFS替代方案的一些原因:

设置Git LFS非常耗时

要使用Git LFS,每个用户都必须在其服务器和工作站上安装它。这样做很耗时,对管理员来说也是一种负担。而且一旦安装完成,对Git LFS的可见性和控制性都较低。

维护Git LFS需要额外的步骤

维护Git LFS需要额外的步骤,因为您必须为每个Git存储库(即每个Git项目)设置Git LFS。这意味着每个存储库都需要安装Git LFS,您还需要告诉LFS要跟踪的文件类型,然后将跟踪信息添加到存储库中,以便在提交该类型的文件时,它将被放置在LFS存储库中。对于还不太了解Git的用户来说,这颇具挑战性。

Git LFS不适用于美术团队

Git LFS对于软件开发人员来说是有帮助的,因为它使克隆和分支更加容易。但对于大多数需要与美术人员或设计师协作的团队来说,出于以下几个关键原因,它不是一个好的解决方案:

  • 它不与流行的美术和设计软件集成;
  • 非编码人员仍然需要承受从Git LFS拉取其资源时的性能损失;
  • 它是一个基于命令行的工具,因此用户必须学习一些命令才能获取或提交资产。许多美术人员会在这方面遇到困难,或者他们根本不愿这么做。虽然有一些图形化的Git LFS工具,但游戏引擎和设计工具与Git的集成较差;
  • 作为基于命令行的工具,查找文件的正确版本也变得复杂,这使得美术人员难以迭代特定资产。

因此,对于游戏开发或虚拟制作团队来说,Git LFS并不是一个理想的解决方案。

上述问题会影响团队的绩效。因此,尽管Git本身是免费的,但当您的团队需要更快、更具可扩展性的解决方案时,使用它的成本可能是昂贵的。

Git LFS的替代方案

Git LFS并不是在Git中管理大文件的唯一方式。替代方案包括其他开源或第三方修复程序,例如:

  • git-annex
  • git-bigfiles
  • git-fat
  • git-media
  • git-bigstore
  • git-sym

这些选项仍然存在与Git LFS相同的问题:它们是基于命令行的工具,不与美术或设计工具集成,如果使用它们,您仍然需要获取和发送文件(意味着仍然需要等待),而且找到一个文件的最近版本很具挑战性。您需要一种更好的方式来管理大型文件和二进制文件。

存储大文件的最佳版本控制工具:Perforce Helix Core

现在的项目比以往都大得多,其中包含许多的文件和混合资产。Git和Git LFS根本无法版本控制它们,但Perforce Helix Core可以。

Helix Core是来自Perforce的旗舰版本控制软件,是大型文件管理的最佳版本控制工具,原因如下:

二进制文件处理

Perforce Helix Core非常适合管理大型二进制文件。在Perforce Helix Core中,大文件存储是一种原生的能力,而不是附加组件。它让您能够将二进制文件与源代码一起存储。实际上,您的所有最大文件——二进制文件、源代码、艺术文件、视频文件、图像、库和构建产物等,都可以存放在单个储存库中。将所有资产存储在一个储存库中可以让分散的团队更快地行动。

可扩展性

Perforce Helix Core能够随着团队的全球扩展而扩展。Git通常通过距离用户数千英里的单个服务器访问,而使用Git LFS时,用户仍然必须通过网络获取他们需要的二进制文件。得益于分布式架构,Perforce Helix Core可以通过边缘服务器访问,将资产放置在靠近用户的位置,从而使他们更快地获取这些资产。

安全

在Perforce Helix Core中,您可以将权限设置为单个文件和IP地址,因此团队成员和外部贡献者只能访问他们需要的文件,或者您认为他们需要的文件。这减少了数据量,并保护了您的知识产权。您无法在本地Git中执行此操作,即使您使用类似GitHub这样的Git管理器,也只能为每个储存库或分支设置权限,而不能为单个文件设置权限。

协作

对于在数字资产上协作的团队来说,Perforce Helix Core比Git LFS更好,因为它提供了更好的文件锁定功能。LFS的“文件锁定”功能实际上只是一个“存储库锁定”,就是当更改中包含被其他用户锁定的文件时,此功能会阻止这个更改被推送到主储存库。
而Perforce Helix Core采用的是真实的文件锁定策略。如果您尝试提交一个包含已锁定文件的待处理更改列表,您会收到错误提示。如果发生这种情况,您可以轻松地从更改列表中删除已锁定的文件并提交其他内容。此外,全局锁定可见性有助于在第一时间防止冲突发生。不会有冲突,也不会有不必要的更改。

如果您想将您的Git LFS仓库迁移到Perforce Helix
Core,并保留历史记录,即使其中存储了数百GB的二进制数据,请联系Perforce中国授权合作伙伴——龙智,我们的专家团队将为您提供专业建议。

顺便说一下,Perforce也有Git

您是否有需要使用Git的团队?Perforce为您提供了多个选项。如果您同时使用Perforce Helix Core和Git,您可以使用免费的Git连接器将Git资产简单地镜像到Perforce Helix Core中,该连接器对于已获得Perforce Helix Core许可的客户免费。此外,Perforce还通过Helix TeamHub为存储在Helix Core中的Git资产提供了代码审查工具。当以这种方式配置时,Helix TeamHub对于持有Perforce Helix Core许可的用户也是免费的。

Helix TeamHub也可以独立于Perforce Helix Core使用,可以在云端或本地部署。在这种方式下,它不仅可以用于托管Git储存库,还可以用于SVN、Mercurial、WebDav、Ivy、Maven和Docker储存库。

您的团队可以从5个用户和1GB的存储空间开始免费使用,随着团队规模的增长逐步付费。

文章来源:https://bit.ly/3mLVmdx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共治、共建、共享!龙蜥社区第 16 次运营委员会会议顺利召开!

4 月 14 日,龙蜥社区在凝思软件召开了第 16 次运营委员会会议,本次会议由统信软件运营委员会委员崔开主持。来自阿里云、红旗软件、海光、Intel、联通软研院、浪潮信息、凝思软件、普华基础软件、统信软件、万里红、新华三、中科方德等理事单位的 23 位委…

第一章 Go环境搭建

前言 Golang是一种比较新颖的编程语言,其强大的功能以及底层的强大支撑快速的成为了编程语言的佼佼者,使其备受欢迎。 1、Go的安装与配置 如果你有一定的开发经验或者学习知识肯定知道,如何语言的开发都需要进行环境的配置与相关资源的安装…

12. 图的进阶

12. 图的进阶 12.1 有向图 在实际生活中,很多应用相关的图都是有方向性的,最直观的就是网络,可以从A页面通过链接跳转到B页面,那么a和b连接的方向是a->b,但不能说是b->a,此时我们就需要使用有向图来解决这一类问题&#x…

8 年后端开发,API 设计的学习方法分享

笔者目前在参与一个开源项目,平时接触多的也是 API 相关的核心功能开发,经常会有读者私信我,对于开发新人而言,如何快速学习 API 设计,我简单总结了一下: 1. 学习基础知识:学习HTTP、RESTful AP…

Vue表单基本操作-收集表单数据

收集表单数据 使用vue中的v-model收集表单里面的数据,不同的表单元素配合v-model会有不同的写法和技巧 本次的表单元素包括:文本框,单选,多选,下拉框,文本域 编写表单元素 首先编写表单元素,…

IT项目管理 PPT 选择题【太原理工大学】

单选题,10*2分20分 填空题,10*2分20分 判断题,10*1分10分 画图题,10分 进度计算题,15分 成本计算题,15分 简答题,5*2分10分 重点章节:3、4、5、6、7章 我觉得小题应该是在 PP…

如何在短时间内完成短视频app的上线及推广?

作为一款充满活力和创意的短视频app,想要快速上线并赢得用户的喜爱是一项艰巨的任务。在本文中,我们将探讨如何在短时间内完成短视频app的上线及推广。 短视频app搭建 首先,要成功地上线一款短视频app,您需要一套高质量的小视频…

从零入门激光SLAM(八)——ROS常用消息

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…

Scrapy框架 -- POST请求实现案例

一、创建一个Scrapy项目fanyi,并进入该项目创建,fanyipc爬虫文件 scrapy startproject fanyi cd fanyi scrapy genspider example example.com 二、修改配置文件settings,关闭君子协议,只看报错信息,自定义UA头 ROB…

Vue.prototype 详解及使用

前言: 我们可能会在很多组件里用到数据/实用工具,但是不想污染全局作用域。这种情况下,可以通过在原型上定义它们使其在每个 Vue 的实例中可用。 1. 基本示例 在main.js中添加一个变量到 Vue.prototype Vue.prototype.$appName My App这…

ChatGPT应用篇:如何快速生成精美PPT提高工作效率-附资料下载

一、ChatGPT生成markdown源代码 问: 我想做一份ChatGPT变现方法的PPT,请生成丰富的教学展示内容,因为生成PPT是需要MarkDown格式的,请您输出Markdown格式的内容 ChatGPT回复: 二、Mindshow登录/注册 用浏览器打开Mi…

公司为什么禁止SpringBoot项目使用Tomcat?

前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。 同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和…

Mac 安装Charles抓包工具及使用教程(什么,都什么时候了还不会抓包)

Mac 安装Charles抓包工具及使用教程 一、抓包工具对比二、安装Charles三、网页抓包 一、抓包工具对比 这五个工具都是比较常用的抓包工具,具体哪个更适合你需要根据你的具体需求和使用习惯来决定。以下是它们各自的优缺点: Charles:功能强大…

[LeetCode周赛复盘] 第 342 场周赛20230423

[LeetCode周赛复盘] 第 342 场周赛20230423 一、本周周赛总结二、 6387. 计算列车到站时间1. 题目描述2. 思路分析3. 代码实现 三、6391. 倍数求和1. 题目描述2. 思路分析3. 代码实现 四、6390. 滑动子数组的美丽值1. 题目描述2. 思路分析3. 代码实现 五、 6392. 使数组所有元…

Grid (基础DP)

题目&#xff1a; 给一个 HW 的网格&#xff0c;网格由‘.’和‘#’组成&#xff0c;一开始在左上角 (1,1)(1,1) 每一步只能向右或向下走&#xff0c;不能经过 # 格子&#xff0c;求走到右下角 (H,W) 有多少种走法。 其中 2<H,W<1000&#xff1b; 答案对 10^97 取模。…

ZBlog安装SSL证书

Z-BlogPHP简介 Z-BlogPHP是一款强大的博客式建站系统和CMS程序Z-BlogPHP支持PHP 5.2 - 7.4、8.0 - 8.1,可运行在市面上所有的操作系统和WEB服务器之上。 大部分部署ZBlogPHP程序使用Linux比较普遍&#xff0c;这是介绍使用宝塔控制面板安装SSL证书方法&#xff1a; 1、进入Gw…

JDBC操作数据库

数据库介绍 数据库是一种存储结构&#xff0c;允许使用各种格式输入、处理和检索数据&#xff0c;不必再每次需要数据时重新输入。当前比较流行的数据库主要有MySQL、Oracle、SQL Server等 使用JDBC操作数据库&#xff0c;SQL语句是比不可少的&#xff0c;SQL是一种结构化查询…

安装配置 ZLMediaKit

一、ZLMediaKit 库简介 ZLMediaKit 是一个基于 C11 的高性能运营级流媒体服务框架 官方写的项目特点&#xff1a; 基于 C11 开发&#xff0c;避免使用裸指针&#xff0c;代码稳定可靠&#xff0c;性能优越。 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4…

【数据分析之道-Pandas(一)】Series操作

文章目录 专栏导读1、Series简介2、创建Series3、Series索引4、Series切片 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》&#xff0c;本专栏针对大学生、初级数据分析工…

光线追踪 1(基本概念Whitted-Style Ray Tracing)

为什么要光线追踪 光栅化存在什么问题 无法实现软阴影&#xff08;光源不是严格点光源时&#xff09; 无法解决光线反射超过一次的情况 相对来说光照效果的质量低 光线追踪的特点 准确慢&#xff08;相对光栅化&#xff09; 什么是光线追踪 光线的基本假设 光线沿直…