Git大型文件存储

news2024/11/27 0:37:29

什么是 Git LFS?
Git 是跟踪代码库演变和与同行高效协作的绝佳选择。但是,当您要跟踪的存储库非常大时会发生什么?
如果您考虑一下,存储库变得庞大的主要原因大致有两个:

  • 他们积累了非常非常长的历史(项目在很长一段时间内增长,包袱积累)
  • 它们包括需要跟踪并与代码配对的巨大二进制。每当提交一个100MB的 文件中的细微改变,你仓库的大小当然也会增长100MB,这样快速的增长会使你的仓库因为内容太过于庞大而变得几乎无法使用。它确实与所有"大"文件有关:如视频,音频记录,数据集等的问题。

但是,不要仅仅因为你有一个大的存储库历史记录或巨大的文件而放弃 Git 的出色功能,这两个问题都有可行的解决方案。一般来说,版本控制的好处还是存在的,而且应该用于各种各样的项目当中去。
对于第一个问题,可以使用git浅层克隆和git稀疏检出方法解决,此文不做详述。
对于第二个问题,使用 LFS : 有效的处理大文件。

当然,LFS 并不能像"变魔术一样"处理所有的大型数据:它需要记录并保存每一个变化。然而,这就把负担转移给了远程服务器 - 允许本地仓库保持相对的精简。
为了实现这个可能,LFS 耍了一个小把戏:大文件是在签出过程中下载的,而不是在克隆或获取过程中下载的。它在本地仓库中并不保留所有的文件版本,而是仅根据需要提供检出版本中必需的文件。
在这里插入图片描述
Git LFS 通过将存储库中的大文件替换为小指针文件来实现这一点。在正常使用期间,您永远不会看到这些指针文件,因为它们由 Git LFS 自动处理:

  1. 当你添加一个文件到你的仓库时,Git LFS会将其内容替换成一个指针,并将文件内容存储在本地Git LFS缓存中。
    在这里插入图片描述
  2. 当你推送新的提交到服务器时,新推送的提交所引用的任何 Git LFS 文件会从本地的 Git LFS 缓存转移到与你的 Git 仓库绑定的远程 Git LFS 存储。
    在这里插入图片描述
  3. 当你签出一个包含Git LFS指针的提交时,它们会被替换为本地Git LFS缓存中的文件,或者从远程Git LFS存储中下载。在这里插入图片描述
    LFS 的指针文件是一个文本文件,存储在 Git 仓库中,对应大文件的内容存储在 LFS 服务器里,而不是 Git 仓库中。
    指针文件很小,小于 1KB。其格式为 key-value 格式,第一行为指针文件规范 URL,第二行为文件的对象 id,也即 LFS 文件的存储对象文件名,可以在.git/lfs/objects 目录中找到该文件的存储对象,第三行为文件的实际大小(单位为字节)。所有 LFS 指针文件都是这种格式。

Git LFS是无缝的:在你的工作副本中,你只会看到你的实际文件内容。这意味着你可以在不改变现有的Git工作流程的情况下使用Git LFS;你只需像平常一样进行git checkout、编辑、git add和gitcommit。git clone和git pull操作将明显加快,因为你只下载你实际检出的提交所引用的大文件的版本,而不是曾经存在的文件的每个版本。

下载和安装 Git LFS

  • 下载:
    • Linux Debian 和 RPM packages: https://packagecloud.io/github/git-lfs/install
    • Windows:目前lfs已经集成在了 Git for Windows 中,直接下载和使用最新版本的Windows Git即可。
    • 直接下载二进制包:https://github.com/git-lfs/git-lfs/releases
    • 依据源码构建:https://github.com/git-lfs/git-lfs
  • 安装:
    • 如果你选择使用二进制包下载后安装,直接执行解压后的./install.sh脚本即可,这个脚本会做两个事情:
      • 在$PATH中安装Git LFS的二进制可执行文件
      • 执行git lfs install命令,让当前环境支持全局的LFS配置

本地新仓库支持 Git LFS

  • 创建一个新的 Git LFS 仓库
    要创建一个新的 Git LFS 仓库,你需要在创建仓库后运行 git lfs install。
    在这里插入图片描述
    这将在你的仓库中安装一个特殊的预推送pre-push Git hookGit钩子,当你git push时,它将把Git LFS文件传输到服务器。GitLab/Github/Gitblit 它们已经支持LFS并都自动启用了LFS选项,对于没有启动的需要在仓库设置中启用Git LFS。

  • 选择您希望 Git LFS 管理的文件类型(或直接编辑 .gitattributes)。您可以随时配置其他文件扩展名。

    git lfs track "*.psd"
    

    现在确保跟踪 .gitattributes:

    git add .gitattributes
    

    定义 Git LFS 应跟踪的文件类型本身不会将任何预先存在的文件转换为 Git LFS,例如其他分支上的文件或您之前的提交历史记录中的文件。这意味着你应该在文件没有提交到仓库前就让 LFS 进行追踪。
    可以在初始化仓库选择配置要追踪的文件规则(就跟配置忽略文件一样)。

  • 只需像往常一样提交并推送到 GitHub;例如,如果您当前的分支命名为:main

    git add file.psd
    git commit -m "Add design file"
    git push origin main
    

在这里插入图片描述

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

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

相关文章

【C】文件操作fopen与fclose

目录 函数 1.fopen 2.fclose 3.freopen 函数 头文件 #include<stdio.h> 1.fopen FILE *fopen(const char *restrict dilename,const char* restrict mode); 作用&#xff1a;打开文件参数&#xff1a; 第一个是含有要打开文件名的字符串&#xff08;"文件名…

肝了一周的八万字Redis实战篇

Redis实战篇 文章目录Redis实战篇开篇导读1. 短信登录2. 商户查询缓存3. 优惠卷秒杀4. 附近的商户5. UV统计6. 用户签到7. 好友关注8. 达人探店一、短信登录1. 导入黑马点评项目1.1 导入SQL1.2 有关当前模型1.3 导入后端项目1.4 导入前端工程1.5 运行前端项目2. 基于Session实现…

【杂谈】快来看看如何使用LGMT这样的蜜汁缩写来进行CodeReview吧!

文章目录一、先从一个梗开始说起吧&#xff01;二、什么是LGTM&#xff1f;2.1 LGTM 是什么意思&#xff1f;2.2 蹭梗品牌故事2.3 虚假的CodeReview三、Code Review中的蜜汁缩写四、参考链接一、先从一个梗开始说起吧&#xff01; 公司最近在如火如荼的开展CodeReview活动&…

Reinforcement learning from demonstration through shaping(Wiewiora 2003)

摘要 强化学习中的一个重要问题是如何以有原则的方式整合专家知识&#xff0c;尤其是当我们扩展到现实世界的任务时。在本文中&#xff0c;我们提出了一种在不改变最优策略的情况下将任意建议纳入强化学习agent的奖励结构的方法。 该方法将 Ng 等人 (1999) 提出的基于势能的塑…

1530_AURIX_TriCore内核架构_通用寄存器以及系统寄存器

全部学习汇总&#xff1a; GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 继续看一下内核手册&#xff0c;这次了解一下通用寄存器以及系统寄存器。最近一段时间最复位以及trap困扰了许久&#xff0c;看看这里面是否能够获取…

黄河水稻山东智慧 国稻种芯·中国水稻节:济南泉城米袋子

黄河水稻山东智慧 国稻种芯中国水稻节&#xff1a;济南泉城米袋子 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康大会报道&#xff1a;又是一年春天。济南黄河流域吴家堡水稻田旁的…

数据挖掘与机器学习:数据挖掘算法原理与实践:数据预处理

目录 第一关&#xff1a;标准化 任务描述&#xff1a; 相关知识&#xff1a; 一、为什么要进行标准化 二、Z-score标准化 三、Min-max标准化 四、MaxAbs标准化 编程要求&#xff1a; 测试说明&#xff1a; 第二关&#xff1a;非线性转换 任务描述&#xff1a; 相关知…

【LeetCode】878. 第 N 个神奇数字

题目描述 一个正整数如果能被 a 或 b 整除&#xff0c;那么它是神奇的。 给定三个整数 n , a , b &#xff0c;返回第 n 个神奇的数字。因为答案可能很大&#xff0c;所以返回答案 对 109 7 取模 后的值。 示例 1&#xff1a; 输入&#xff1a;n 1, a 2, b 3 输出&#xff…

stm32cubemx hal学习记录:FreeRTOS互斥量

一、互斥量 1、互斥量用于互锁&#xff0c;可以充当资源保护的令牌&#xff0c;当一个任务希望访问某个资源时&#xff0c;它必须先获取令牌&#xff0c;当任务使用完资源后&#xff0c;必须返还令牌&#xff0c;以便其他任务可以访问该资源。 2、互斥量一般用于临界资源保护…

[附源码]计算机毕业设计JAVA教师档案管理系统

[附源码]计算机毕业设计JAVA教师档案管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

LabVIEW通信-CAN

文章目录CANcan总线特点位定位与同步标识符检验滤波报文传输类型CAN CAN属于OSI的物理层与数据链路层 can总线特点 网络各节点之间的数据通信实时性强 开发周期短 结构简单&#xff08;只有两根线与外部相连&#xff0c;内部继承了错误探测和管理模块&#xff09; 数据通信没…

Spring IOC

一、为什么要使用Spring&#xff1f; Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编程模型促进良好的编程习惯。 为…

RPA案例|云扩助力保险行业开启超自动化运营新阶段

近五年&#xff0c;全球平均保险深度总体呈小幅平稳下降趋势&#xff0c;2021年中国保险深度为4.15%&#xff0c;全球平均保险深度为5.96%&#xff0c;而美国、英国等发达国家的保险深度则保持在10%以上&#xff0c;中国保险深度仍然具有很大的上升空间。 为进一步拓展增量空间…

软考是什么?---2023年软考最全解析

软考是什么&#xff1f; 软考全称为&#xff1a;计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;发证机构为国家人力资源和社会保障部、工业和信息化部&#xff0c;简称为&#xff1a;人社部和工信部。中日韩三国互认&#xff0c;证书的含金量很高…

Navicat操作数据库与Mysql常见命令操作实战

一&#xff1a;Navicat下载与安装 官网下载链接&#xff1a;Navicat 下载完后直接安装即可 二&#xff1a;数据库的连接 1.打开Navicat软件&#xff0c;点击左上角连接按钮&#xff0c;选择mysql数据库 输入完成后双击连接名&#xff0c;连接成功后&#xff0c;小海豚变绿色 …

Advances in Graph Neural Networks笔记5:Dynamic Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 本书网址&#xff1a;https://link.springer.com/book/10.1007/978-3-031-16174-2 本文是本书第五章的笔记。 懒得看了&#xff01;反正我也不是做这个的。以后要是真的去做动态图了也不是没资源找&#xff0c;这个我懒得看了&#xff0c;就写一…

CentOS 7安装Redis+Springboot整合Redis

1、虚拟环境条件&#xff1a; 已安装VMwareVMware Tools 使用的是视图界面并配置了基本开发环境&#xff0c;参照超详细VMware安装CentOs图文教程_Sq夏颜的博客-CSDN博客 2、直接把已经下载好的redis安装包拖进来&#xff0c;下载地址&#xff1a;CRUG网站 3、解压 tar -zxv…

美国fba海运清关基本流程

美国fba海运清关是美国物流运输的重要组成部分&#xff0c;准备好清关材料和正确流程是确保货物安全快速进口到美国的关键。虽然很多客户会选择双清包税的方式&#xff0c;但是当跨境电商越来越大的时候&#xff0c;双清包税的成本也会相应增加。选择自税不包清关&#xff0c;按…

react配置项目路径别名@

为什么有的项目引入路径写可以&#xff0c;自己的不行呢&#xff1f; 因为别人的项目是配置过路径别名的&#xff0c;就表示src目录&#xff0c;因此我们也需要配置一遍&#xff0c;以下是react项目示范&#xff0c;vue项目同理。 ts对指向src目录的提示是不支持的&#xff0…

Linux命令学习之原来最简单的ls命令这么复杂

ls命令的使用格式如下 ls [选项] [具体的文件] # [] 表示可选 直接在命令行输入ls将当前目录下的列出当前目录下的文件和目录。 1 2 $ls LICENSE README.md hello.c 也可以指定具体的目录和文件 1 2 3 $ls / bin dev home lib32 libx32 mnt proc run srv tmp …