Git LFS: 简单高效的大文件版本控制

Git Large File Storage

问题

在使用git上传大文件时候,git push时候会报错:

shell 复制代码
remote: error: File xxx.tar.gz is 135.17 MB; this exceeds GitHub's file size limit of 100 MB

可以看到,git限制上传大小是100MB,超过的话就会报错,找了一圈,学到了一个新东西git LFS,这里记录一下。

用于对大文件进行版本控制的开源 Git 扩展

Git 大文件存储 (LFS) 使用 Git 内部的文本指针替换音频样本、视频、数据集和图形等大文件,同时将文件内容存储在 GitHub.com 或 GitHub Enterprise 等远程服务器上。

入门指南

下载并安装Git命令行扩展安装。

安装并初始化,一旦下载并安装完成,请通过运行以下命令为您的用户帐户设置Git LFS:

shell 复制代码
git lfs install

只需要在每个用户帐户中运行一次此命令。

跟踪大型文件 。在每个要使用Git LFS的Git存储库中,选择您想要Git LFS管理的文件类型(或直接编辑.gitattributes文件)。可以随时配置额外的文件扩展名。

shell 复制代码
git lfs track "*.psd"
git lfs track "*.pdf"

现在确保.gitattributes文件已被跟踪:

shell 复制代码
git add .gitattributes

请注意,仅定义Git LFS应跟踪的文件类型并不能自行将任何现有文件转换为Git LFS,比如其他分支上的文件或您之前的提交历史中的文件。为此,请使用git lfs migrate命令,该命令具有一系列选项,旨在适应各种潜在用例。

提交和推送 。只需像往常一样提交和推送到GitHub;例如,如果当前的分支名为main

shell 复制代码
git add file.psd
git commit -m "Add design file"
git push origin main

下载和还原:当其他人克隆或拉取您的仓库时,需要运行以下命令来下载和还原 LFS 文件:

shell 复制代码
git lfs fetch
git lfs checkout
  • git lfs fetch:该命令用于从远程 LFS 服务器下载 LFS 文件。当其他人从远程仓库中拉取或克隆包含 LFS 文件的仓库时,他们需要运行 git lfs fetch 命令来获取这些文件的实际内容。这个命令会从 LFS 服务器上下载并将 LFS 文件还原到本地仓库中。
  • git lfs checkout:该命令用于还原本地仓库中的 LFS 文件。在执行 git lfs fetch 命令后,LFS 文件的实际内容会被下载到本地仓库的 .git/lfs 目录中。然而,这些文件只是指针文件,并没有在工作目录中显示实际内容。通过运行 git lfs checkout 命令,LFS 文件的实际内容会被还原到工作目录中,使得能够访问和使用这些文件。

如果不想将某某文件进行Git LFS处理,比如说readme.md, 可以在.gitattributes文件中,添加一行规则来指定不将readme.md文件包含在Git LFS中,这将告诉Git不要将readme.md文件进行Git LFS处理。

shell 复制代码
readme.md !filter

保存并关闭.gitattributes文件,并将.gitattributes文件提交到Git版本控制中。如果之前已经将readme.md文件添加到Git LFS中,可以使用以下命令将其从Git LFS中移除:

shell 复制代码
git lfs untrack readme.md

注意,这些操作只会影响后续的Git操作,不会改变之前已经提交到Git LFS的文件。

其他

查看维基讨论论坛文档,以获取有关可能遇到的任何问题的帮助!

Git LFS是一个开源项目 要开始讨论、提交问题或为项目做贡献,请访问存储库或阅读贡献指南。

如果对将Git LFS集成到另一个工具或产品中感兴趣,可能想阅读API规范或查看参考服务器实现

特性

大文件版本控制

使用Git对大文件进行版本控制,即使这些文件的大小达到几GB。

更多的存储空间

在Git存储库中托管更多内容。通过外部文件存储,轻松保持存储库的可管理大小。

更快的克隆和提取

下载更少的数据。这意味着在处理大文件的存储库中进行更快的克隆和提取。

相同的Git工作流

像往常一样在Git上工作,无需额外的命令、辅助存储系统或工具集。

相同的访问控制和权限

在与GitHub等远程主机一起工作时,对大文件保持与Git存储库的其余部分相同的访问控制和权限。

参考

相关推荐
GoppViper16 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
贩卖纯净水.1 天前
白月光git
git·github
AI逍遥子1 天前
如何从github上clone项目
github
iBaoxing1 天前
如何在 Fork 的 GitHub 项目中保留自己的修改并同步上游更新?github_fork_update
github
The Mr.Nobody2 天前
打通最后一公里:使用CDN加速GitHub Page的访问
github
Amagi.2 天前
如何将本地项目上传到GitHub(SSH连接)
github
白总Server2 天前
php语言基本语法
开发语言·ide·后端·golang·rust·github·php
网安詹姆斯2 天前
网络安全(黑客技术)2024年三个月自学计划
网络·数据结构·python·mysql·安全·web安全·github
爱吃番茄的小狐狸2 天前
Docker镜像下载-使用github action- 解决无法下载docker镜像的问题
docker·容器·github
毅凉2 天前
git笔记
gitee·github·gitcode