【Git】LFS

什么是lfs

Git 是分布式 版本控制系统,这意味着在克隆过程中会将仓库的整个历史记录传输到客户端。对于包涵大文件(尤其是经常被修改的大文件)的项目,初始克隆需要大量时间,因为客户端会下载每个文件的每个版本**。Git LFS(Large File Storage)是由 Atlassian, GitHub 以及其他开源贡献者开发的 Git 扩展,它通过延迟地(lazily)下载大文件的相关版本来减少大文件在仓库中的影响**,具体来说,大文件是在 checkout 的过程中下载的,而不是 clone 或 fetch 过程中下载的(这意味着你在后台定时 fetch 远端仓库内容到本地时,并不会下载大文件内容,而是在你 checkout 到工作区的时候才会真正去下载大文件的内容)。

lfs实现原理

Git LFS 通过将仓库中的大文件替换为微小的指针(pointer) 文件来做到这一点。在正常使用期间,你将永远不会看到这些指针文件,因为它们是由 Git LFS 自动处理的:

  1. 当你添加(执行 git add 命令)一个文件到你的仓库时,Git LFS 用一个指针替换其内容,并将文件内容存储在本地 Git LFS 缓存中(本地 Git LFS 缓存位于仓库的.git/lfs/objects 目录中)。

  2. 当你推送新的提交到服务器时,新推送的提交引用的所有 Git LFS 文件都会从本地 Git LFS 缓存传输到绑定到 Git 仓库的远程 Git LFS 存储(即 LFS 文件内容会直接从本地 Git LFS 缓存传输到远程 Git LFS 存储服务器)。

  3. 当你 checkout 一个包含 Git LFS 指针的提交时,指针文件将替换为本地 Git LFS 缓存中的文件,或者从远端 Git LFS 存储区下载。

LFS 文件的指针文件内容

version https://git-lfs.github.com/spec/v1
oid sha256:5b62e134d2478ae0bbded57f6be8f048d8d916cb876f0656a8a6d1363716d999
size 285

参考文章

  1. 详解 Git 大文件存储(Git LFS)
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Git LFS(Large File Storage)可以更好地管理大文件,以避免将它们包含在Git仓库中导致仓库过大的问题。下面是使用Git LFS的一些基本步骤: 1. 安装Git LFS:首先,您需要在您的计算机上安装Git LFS。您可以从Git LFS的官方网站(https://git-lfs.github.com/)下载适用于您操作系统的安装程序,并按照安装指南进行安装。 2. 配置Git LFS:安装完成后,您需要告诉Git LFS要跟踪和管理哪些大文件。在您的Git仓库目录中,运行以下命令配置Git LFS: ``` git lfs install ``` 3. 跟踪大文件:要跟踪某个大文件,您可以使用以下命令: ``` git lfs track <path_to_large_file> ``` 这将在.gitattributes文件中添加一个规则,指定要使用Git LFS来处理指定路径下的大文件。 4. 提交和推送:一旦您完成了对大文件的跟踪,您可以像正常提交和推送其他文件一样提交和推送您的更改。Git LFS会自动将大文件上传到Git LFS服务器,并在提交时替换为Git LFS的指针。 5. 克隆仓库和获取LFS对象:当您克隆带有Git LFS的仓库时,您需要获取LFS对象,即实际存储在仓库之外的大文件。在克隆后的仓库目录中,运行以下命令获取LFS对象: ``` git lfs fetch ``` 6. 检出文件:一旦您获取了LFS对象,您可以使用以下命令将文件检出到您的工作目录: ``` git lfs checkout ``` 这将从Git LFS服务器下载大文件并将其放置在正确的位置。 请注意,如果您只想下载特定的大文件而不是克隆整个仓库,可以使用`git lfs pull`命令,后跟特定的文件路径: ``` git lfs pull --include "<path_to_large_file>" ``` 这样,您就可以使用Git LFS来管理和下载大文件了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值