Git-LFS:大文件也有了版本管理

关于 GitHub 的大小限制

GitHub 限制存储库中允许的文件大小。 如果尝试添加或更新大于 50 MB 的文件,您将从 Git 收到警告。 更改仍将成功推送到仓库,但您可以考虑删除提交,以尽量减少对性能的影响。

GitHub 阻止超过 100 MB 的推送。

要跟踪超出此限制的文件,必须使用 Git Large File Storage (Git LFS)。 更多信息请参阅“关于 Git Large File Storage”。

Git LFS:(Large File Storage)把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替文件的存在,通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能;

如果您选择在仓库存档中包含 Git LFS 对象,则每次下载这些存档都会计入您帐户的带宽使用量。 每个帐户每月免费获得 1 GB 的带宽,您可以付费获得额外用量。 更多信息请参阅“关于存储和带宽使用”和“管理 Git Large File Storage 的计费”。

**核心思想:**把需要进行版本管理、但又占用很大空间的那部分文件独立于 Git 仓库进行管理。从而加快克隆仓库本身的速度,同时获得灵活的管理 LFS 对象的能力

安装 Git Large File Storage

Mac

  1. 导航到 git-lfs.github.com 并单击 Download(下载)。 也可以使用包管理器安装 Git LFS:

    • 要使用 Homebrew,请运行 brew install git-lfs
    • 要使用 MacPorts,请运行 port install git-lfs

    如果安装用于 Homebrew 或 MacPorts 的 Git LFS,请跳至步骤 6。

  2. 在计算机上,找到并解压缩下载的文件。

  3. 打开 Terminal(终端)。

  4. 将当前工作目录更改为您下载并解压缩的文件夹。

    $ cd ~/Downloads/git-lfs-1.X.X
    

    **注:**在 cd 后面使用的文件路径取决于您的操作系统、下载的 Git LFS 版本以及保存 Git LFS 下载的位置。

  5. 要安装该文件,请运行以下命令:

    $ ./install.sh> Git LFS initialized.
    

    **注:**您可能必须使用 sudo ./install.sh 来安装文件。

  6. 验证安装成功:

    $ git lfs install
    > Git LFS initialized.
    
  7. 如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。

Windows

  1. 导航到 git-lfs.github.com 并单击 Download(下载)

    **提示:**有关安装 Windows 版 Git LFS 的其他方法的更多信息,请参阅此入门指南。

  2. 在计算机上,找到下载的文件。

  3. 双击文件 git-lfs-windows-1.X.X.exe,其中 1.X.X 替换为您下载的 Git LFS 版本。 打开此文件时,Windows 将运行安装程序向导以安装 Git LFS。

  4. 打开 Git Bash。

  5. 验证安装成功:

    C:\Users\FLY>git lfs install
    Git LFS initialized.C:\Users\FLY>
    
  6. 如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。

Linux

  1. 导航到 git-lfs.github.com 并单击 Download(下载)

    **提示:**有关安装 Linux 版 Git LFS 的其他方法的更多信息,请参阅此入门指南。

  2. 在计算机上,找到并解压缩下载的文件。

  3. 打开 Terminal(终端)。

  4. 将当前工作目录更改为您下载并解压缩的文件夹。

    $ cd ~/Downloads/git-lfs-1.X.X
    

    **注:**在 cd 后面使用的文件路径取决于您的操作系统、下载的 Git LFS 版本以及保存 Git LFS 下载的位置。

  5. 要安装该文件,请运行以下命令:

    $ ./install.sh> Git LFS initialized.
    

    **注:**您可能必须使用 sudo ./install.sh 来安装文件。

  6. 验证安装成功:

    $ git lfs install
    > Git LFS initialized.
    
  7. 如果未看到表示 git lfs install 成功的消息,请联系 GitHub Support。 确保包含操作系统的名称。

配置 Git Large File Storage

安装 [Git LFS] 后,需要将其与仓库中的大文件相关联。

Mac

如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。

如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。

  1. 打开 Terminal(终端)。

  2. 将当前工作目录更改为要用于 Git LFS 的现有仓库。

  3. 要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track,后跟要自动上传到 Git LFS 的文件扩展名。

    例如,要关联 .psd 文件,请输入以下命令:

    $ git lfs track "*.psd"
    > Adding path *.psd
    

    要与 Git LFS 关联的每个文件类型都需要添加 git lfs track。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。

    **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。

    • 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
    • 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
    • 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
  4. 将文件添加到与关联的扩展名相匹配的仓库:

    $ git add path/to/file.psd
    
  5. 提交文件并将其推送到 GitHub:

    $ git commit -m "add file.psd"
    $ git push
    

    您会看到一些有关文件上传的诊断信息:

    > Sending file.psd
    > 44.74 MB / 81.04 MB  55.21 % 14s
    > 64.74 MB / 81.04 MB  79.21 % 3s
    

Windows

如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。

如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。

  1. 打开 Git Bash。

  2. 将当前工作目录更改为要用于 Git LFS 的现有仓库。

  3. 要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track,后跟要自动上传到 Git LFS 的文件扩展名。

    例如,要关联 .psd 文件,请输入以下命令:

    $ git lfs track "*.psd"
    > Adding path *.psd
    

    要与 Git LFS 关联的每个文件类型都需要添加 git lfs track。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。

    **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。

    • 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
    • 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
    • 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
  4. 将文件添加到与关联的扩展名相匹配的仓库:

    $ git add path/to/file.psd
    
  5. 提交文件并将其推送到 GitHub:

    $ git commit -m "add file.psd"
    $ git push
    

    您会看到一些有关文件上传的诊断信息:

    > Sending file.psd
    > 44.74 MB / 81.04 MB  55.21 % 14s
    > 64.74 MB / 81.04 MB  79.21 % 3s
    

Linux

如果仓库中存在要用于 GitHub 的现有文件,则需要先从仓库中删除它们,然后在本地将其添加到 Git LFS。 更多信息请参阅“将仓库中的文件移动到 Git LFS”。

如果有引用的 Git LFS 文件未成功上传,您将收到一条错误消息。 更多信息请参阅“解决 Git Large File Storage 上传失败”。

  1. 打开 Terminal(终端)。

  2. 将当前工作目录更改为要用于 Git LFS 的现有仓库。

  3. 要将仓库中的文件类型与 Git LFS 相关联,请输入 git lfs track,后跟要自动上传到 Git LFS 的文件扩展名。

    例如,要关联 .psd 文件,请输入以下命令:

    $ git lfs track "*.psd"
    > Adding path *.psd
    

    要与 Git LFS 关联的每个文件类型都需要添加 git lfs track。 此命令将修改仓库的 .gitattributes 文件,并将大文件与 Git LFS 相关联。

    **注意:**我们强烈建议您将本地 .gitattributes 文件提交到仓库中。

    • 依赖与 Git LFS 关联的全局 .gitattributes 文件,可能会导致在参与其他 Git 项目时发生冲突。
    • 在存储库中包含 .gitattributes 文件允许创建复刻或新克隆的人员使用 Git LFS 更轻松地进行协作。
    • 在存储库中包含 .gitattributes 文件允许 Git LFS 对象选择性地包含在 ZIP 文件和压缩包存档中。
  4. 将文件添加到与关联的扩展名相匹配的仓库:

    $ git add path/to/file.psd
    
  5. 提交文件并将其推送到 GitHub:

    $ git commit -m "add file.psd"
    $ git push
    

    您会看到一些有关文件上传的诊断信息:

    > Sending file.psd
    > 44.74 MB / 81.04 MB  55.21 % 14s
    > 64.74 MB / 81.04 MB  79.21 % 3s
    

常用命令

基本使用

#配置需要使用 Git LFS 管理的文件
git lfs track "*.pdf"
#在Git仓库根目录下的 .gitattributes中生成:*.pdf filter=lfs diff=lfs merge=lfs -text;同样可以通过修改.gitattributes文件来配置追踪文件# 不再使用 Git LFS 管理指定的文件
git lfs untrack "*.pdf"#查看lfs管理的文件
git lfs track # 类似git status,查看当前 Git LFS 对象的状态
git lfs status# 枚举所有被 Git LFS 管理的文件
git lfs ls-files# 查看 Git LFS 版本
git lfs version#git lfs clone通过合并获取 LFS 对象的请求,减少了 LFS API 的调用,并行化 LFS 对象的下载,从而达到显著的速度提升。同样也兼容没有使用 LFS 的仓库。即无论要克隆的仓库是否使用 LFS,都可以使用 git lfs clone 命令来进行克隆。
#目前最新版本的 git clone 已经能够提供与 git lfs clone 一致的性能,因此自 Git LFS 2.3.0 版本起,git lfs clone 已不再推荐使用。
git lfs clone url/ssh

只获取仓库本身,而不获取任何 LFS 对象

GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/user/repo.git
# 或
git -c filter.lfs.smudge= -c filter.lfs.required=false clone https://github.com/user/repo.git#这两条命令适用于其他git命令;如checkout、ret等

只推送仓库本身,而不推送任何 LFS 对象

#如果当前仓库启用了 LFS,而还需要将该仓库备份至其他不支持 LFS 的 git 服务器,那么可以在 push 时加上 --no-verify 参数来跳过 LFS 对象的提交
git push --no-verify backup master

获取当前 commit 下包含的 LFS 对象的当前版本

#如果起初获取代码时,没有一并获取 LFS 对象,而随后又需要这些被 LFS 管理的文件时,可以单独执行 LFS 命令来获取并签出 LFS 对象:
git lfs fetch
git lfs checkout
# 或
git lfs pull

获取指定时间的版本

#Git LFS 相关命令在获取 LFS 对象时,默认仅会获取该对象当前被引用的版本,如果想要一次获取 LFS 对象的当前及最近版本的话,我们首先需要对最近进行定义:
git config lfs.fetchrecentcommitsdays 7
#7 表示同时下载过去 7 天内的版本(相对于获取的 LFS 对象的时间),该项配置默认值为 0,即不获取过去的版本,而仅获取指定的版本

场景

迁移已有的 git 仓库,需要使用 git lfs 管理

# 重写 master 分支,将历史提交中的 *.zip 都用 git lfs 进行管理
git lfs migrate import --include-ref=master --include="*.zip"# 重写所有分支及标签,将历史提交中的 *.rar,*.zip 都用 git lfs 进行管理
git lfs migrate import --everything --include="*.rar,*.zip"

注意:

重写历史后的提交需执行 git commit --force
如有迁移至 git lfs 前的仓库的多份拷贝,其他拷贝可能需要执行 git reset --hard origin/master 来重置其本地的分支,注意执行 git reset --hard 命令将会丢失本地的改动。

参考链接

安装 Git Large File Storage

https://zhuanlan.zhihu.com/p/146683392

https://gitee.com/help/articles/4235#article-header5

Git-LFS:大文件也有了版本管理相关推荐

  1. git提交大文件报错解决方案

    git提交大文件报错解决方案 1.http.postBuffer 2.Git LFS 安装及配置git lfs 1.在Git仓库中为仓库设置相关配置 2.选择要用LFS追踪的文件 3.查看正在被LFS ...

  2. git提交大文件的解决方法

    git提交大文件的解决方法 参考文章: (1)git提交大文件的解决方法 (2)https://www.cnblogs.com/perryxiong/p/5606525.html 备忘一下.

  3. git clone大文件EOF错误

    git clone大文件EOF错误 我们常用的git clone https://XXX 下载大文件时,加上墙的问题.会出现中断,例如gitlab git clone https://gitlab.c ...

  4. 使用bfg快速清理git历史大文件

    文章目录 使用bfg快速清理git历史大文件 步骤 脚本 清理服务器 使用bfg快速清理git历史大文件 之前写过一篇的,使用的git命令清理的大文件,但是我3G多的git,.git文件夹里面的pac ...

  5. Git仓库瘦身--清除项目git仓库大文件

      Mark一下"清除A项目git仓库大文件"实操过程,由于公司保密政策,无法提供实操截图,这里提供下操作思路. 后来也搜到更加推荐的方法:用BFG去做git仓库的清理(最佳工具) ...

  6. 【Git删除大文件失败,提示WARNING: Ref ‘refs/heads/master‘ is unchanged的解决思路】

    1. 问题描述 最近使用Gitee一直在独立开发某个项目,某次因为某个测试文件比较大,超过了100MB,gitee无法接受,上传失败.但是当时我没有发现上传失败,就没有处理,等到今天发现的时候,已经提 ...

  7. Git push大文件失败的处理

    如果出现 error: failed to push some refs to xxxxxx的错误的时候, 简单的两步处理方式为: 1.git config --global lfs.contentt ...

  8. 【github】Git LFS上传大文件到github

    GitHub Desktop 包含用于管理大文件的 Git Large File Storage,即GLT FS.Git LFS 可让您将文件推送到超出 100 MB 正常限制的 GitHub. 所以 ...

  9. git上传超过100m大文件

    1.git出错如下错误时 执行如下可解决错误: git rm --cache '大文件路径' git commit --amend -CHEAD git push 2.当必须上传大文件时.需借助git ...

  10. eclipse查看git地址_Git大文件管理:函数计算和OSS支持的Git LFS服务器

    此服务器支持Batch API和File Locking API.项目地址与文档: https://github.com/zhxxch/git-lfs-one/​github.com LFS 是个好东 ...

最新文章

  1. SQL ORDER BY 两个列
  2. 如何排查 StackOverflow 异常
  3. ruby 嵌套函数_Ruby嵌套直到循环带有示例
  4. 提高redis cluster集群的安全性,增加密码验证
  5. struts2通配符_基于Struts2框架的名片管理系统
  6. 基于Lua语言的wireshark插件编写
  7. ‘catkin_make‘ is currently not installed问题修复
  8. FPGA数字信号处理(十七)多级CIC滤波器Verilog设计
  9. 京香julia_百度百科
  10. 【exp-linux】用aplay直接播放音频文件(mp3,wav)
  11. 万字长文深度分析华为智能汽车战略
  12. 《道德经》马王堆出土帛书版
  13. 色彩管理实验 matlab,对色彩管理的一些认识和运用
  14. OpenGL三维变换与三维投影实例(行星绕日旋转)
  15. 用Excel制作条形码
  16. Google VR开发-Cardboard VR SDK头部追踪实现(罗德里格旋转公式)
  17. python九九乘法表的实例_python九九乘法表的实例
  18. C++ 模板类和友元
  19. PWM控制技术+Simulink仿真详解
  20. OpenEuler安装Docker及OpenGuass最全教程

热门文章

  1. Intellij IDEA2017破解
  2. opencore 0.6.3 华硕_钜惠嗨翻双11,颜值优选华硕GT501白色狙击手机箱
  3. python实现最长公共子串
  4. 脑机接口五大应用场景
  5. 黑马程序员python15期月薪_2019年传智播客黑马python人工智能15期全套视频教程
  6. ArcGIS矢量数据的处理
  7. Python数据处理Tips数据预处理操作方法汇总
  8. 中艺人脸识别考勤机使用方法_中控人脸识别考勤机说明书 人脸识别考勤机的使用方法...
  9. linux中c语言开发环境,1.1 Linux下的C语言开发环境
  10. 使用plsql导出数据库表中数据