Git本地会保存文件所有版本,对于大文件很容易导致仓库体积迅速膨胀
为了解决这个问题,Github在2015.4宣布推出Git LFS(Large File Storage),详见:Announcing Git Large File Storage (LFS)
其方法是在Git仓库中内嵌一个类似svn工作原理的仓库,被标记放在LFS的文件在Git仓库中仅存放一个指针
执行检出、更新、撤销、切换分支等操作时,根据指针的变化从远程LFS仓库下载对应文件到本地LFS Cache(在.git\lfs\objects目录中)
与git一样,git-lfs也是开放源代码的,其源码托管在github的git-lfs站点上
git1.8.5及之后版本才支持git lfs,git2.12及之后版本集成了git-lfs(在git安装目录的mingw64\bin\git-lfs.exe)
也可以从git-lfs的官网下载最新的版本进行安装。安装完成后会在git lfs安装目录中释放git-lfs.exe,并添加一个名为GIT_LFS_PATH的环境变量指向该目录
但是,若git自带了git-lfs.exe,git并不会使用新安装的git-lfs.exe(通过执行git lfs version显示当前使用的git-lfs版本)
可以将新安装的git-lfs.exe拷贝覆盖git的安装目录的mingw64\bin\git-lfs.exe来使用新安装的git-lfs版本
执行git lfs install,在全局配置文件.gitconfig加入filter "lfs"信息 // 所在目录:c:/users/<用户名>/.gitconfig
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
若在某个git版本库所在目录,执行git lfs install,除了上述功能外,还会为当前git版本库添加hook脚本(也可以单独执行git lfs update来添加hook脚本),使得在执行git标准命令时自动执行git lfs命令
执行git lfs uninstall,对于上面两种情况,会严格执行git lfs install的逆操作来进行清理
常用命令
git lfs help // 查看git lfs的帮助
git lfs version // 查看git lfs的版本号
git lfs track // 查看git lfs的文件追踪信息
git lfs track '*.dll' // dll文件用lfs来管理,会在根目录的.gitattributes文件中添加:*.dll filter=lfs diff=lfs merge=lfs -text
git lfs track "*.a" "*.dylib" "*.so" "*.lib" "*.dll" // a、dylib、so、lib、dll文件用lfs来管理,会在根目录的.gitattributes文件中添加
*.dylib filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
git lfs track 'Guid.upk' // Guid.upk文件用lfs来管理,会在根目录的.gitattributes文件中添加:Guid.upk filter=lfs diff=lfs merge=lfs -text
git lfs track 'maps/*' // 根目录下maps文件夹中的所有文件用lfs来管理,会在根目录的.gitattributes文件中添加:maps/* filter=lfs diff=lfs merge=lfs -text
git lfs untrack 'Guid.upk' // Guid.upk文件不再使用lfs来管理
git lfs status // 查看当前git lfs对象的状态
git lfs ls-files // 查看当前哪些文件是使用lfs管理的
git lfs clone https://github.com/kekec/Test.git // 克隆包含Git LFS的远程仓库到本地
git lfs env // 查看环境信息
参考
git-lfs插件的更多相关文章
-
如何使用 Git LFS 提交大文件?
参考资料: An open source Git extension for versioning large files Git LFS的使用 如何使用 Git LFS 提交大文件? Git LFS ...
-
Jenkins使用Git Parameter插件打包
一. 下载Git Parameter插件: 二. 项目配置: Shell脚本: #!/bin/bash -l echo $deploy_envcase $deploy_env in deploy) e ...
-
FastAdmin 是如何利用 Git 管理插件代码的?
FastAdmin 是如何利用 Git 管理插件代码的? 由于 FastAdmin 的插件很多,如果每一个插件用一个项目来管理,可以倒是可以,但是项目还多了. 但是如果使用文件夹在同一级的的方式又不方 ...
-
未安装git lfs导致git下载不完整,没有错误提示
git clone命令没有报错. --recursive选项也加上了. cmake命令没有报错 make命令出错. 最后发现是因为没有安装git lfs,导致大文件下载不完整.最坑的是下载的时候也没有 ...
-
GIT LFS 使用笔记
一.背景 由于git上传文件大小受限,所以我们需要使用GIT LFS对大小超过一定上限的大文件进行处理. 二.安装 linux上安装参见 https://askubuntu.com/questions ...
-
Jenkins:使用Git Parameter插件实现tag或分支的选择性构建
Jenkins如何选择任意一个tag来构建代码 Jenkins如何选择任意一个branch(分支)来构建代码 苦恼了一段时间后,发现Git Parameter插件实现可以帮助我们来实现. 下面来介绍如 ...
-
git lfs
https://git-lfs.github.com/ 1.从这个网址下载git-lfs-windows-amd64-1.1.0.exe,运行这个安装包 2.然后打开git bash 输入git lf ...
-
git lfs指令解决git status显示lib文件被修改,但是没有修改的问题。此时,git checkout没有用。
$ git lfs migrate import --everything --include='*.LIB'https://github.com/git-lfs/git-lfs/issues/283 ...
-
CVE-2019-10392:Jenkins Git client插件RCE复现
0x00 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 0x01 漏洞概述 Git客 ...
-
Git LFS的使用
Git LFS的使用 Git LFS 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持 使用目的 在游戏开发过程中,设计资源占用了很大一部分空间. 像png,psd等文件 ...
随机推荐
-
HDU--洗衣服
洗衣服 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
-
TCP滑动窗口机制的简洁模型
模型图: 我们可以大概看一下上图的模型: 首先是AB之间三次握手建立TCP连接.在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小. A开始发送数据 ...
-
jQuery-1.9.1源码分析系列(十) 事件系统——事件包装
首先需要明白,浏览器的原生事件是只读的,限制了jQuery对他的操作.举个简单的例子就能明白为什么jQuery非要构造一个新的事件对象. 在委托处理中,a节点委托b节点在a被click的时候执行fn函 ...
-
maven buid 导出项目依赖的jar包问题
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:copy-dependencie ...
-
The Happy Worm 分类: POJ 排序 2015-08-03 18:57 5人阅读 评论(0) 收藏
The Happy Worm Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 4698 Accepted: 1047 Descr ...
-
validform表单验证插件最终版
做个笔记,以后直接用吧. 报名界面: <%@ page language="java" pageEncoding="UTF-8" contentType= ...
-
1.UTF8字符集csv文件在oracle下乱码问题处理
1.问题描述 在excel中生成了一个UTF-8编码格式的csv文件准备导入数据库,在notpad++下打开显示正常,编码集为UTF-8,通过pl/sql dev导入oracle是出现乱码,此时初步推 ...
-
[Swift]LeetCode679. 24点游戏 | 24 Game
You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...
-
Verilog强制激励语法
Verilog强制激励语法 1. 在一个过程块中,可以用两种不同的方式对信号变量或表达式进行连续赋值. 过程连续赋值往往是不可以综合的,通常用在测试模块中. 两种方式都有各自配套的命令来停止赋值过程. ...
-
事件触发器-----dispatchEvent
不要被标题蒙蔽了,今天的重点不是论述事件触发器,而是说一下dispatchEvent这个东西.好了,先简单做个铺垫,dispatchEvent是作为高级浏览器(如chrome.Firfox等)的事件触 ...