git 管理和存储二进制大文件
git 管理二进制文件
本文档将逐步带你体验 git 的大文件管理方式。
- 环境: windows10 64位 cmd
- git版本: git version 2.18.0.windows.1
创建到推送
创建二进制文件,修改并推送到远程。
: 初始化项目
git init
: 创建 100k 大小文件模拟二进制文件 和普通文本
fsutil file createnew isbin.bin 102400
cd.>text.txt
: 开启 lfs 功能及文件追踪
git lfs install
git lfs track "isbin.bin"
: --------------- 大小 119 KB --------------- [.git .gitattributes isbin.bin text.txt]
: 提交文件
git add isbin.bin text.txt .gitattributes
git commit -m "初始化"
: --------------- 大小 221 KB ---------------
: 修改文件
echo a>>isbin.bin
echo a>>text.txt
git add isbin.bin text.txt
git commit -m "添加a"
: --------------- 大小 321 KB ---------------
: 修改文件
echo b>>isbin.bin
echo b>>text.txt
git add isbin.bin text.txt
git commit -m "添加b"
: --------------- 大小 422 KB --------------- 通过上面的大小发现,每次提交,二进制文件体积还是会增大一倍。
: 推送到远端
git.exe push --progress "https://github.com/wll8/bin" master
克隆到推送
从远程克隆,修改并推送。
: 从远端克隆
git clone https://github.com/wll8/bin bintest
cd bintest
: --------------- 大小 222 KB --------------- 上传 git 远程的二进制文件只保存最新的一份, 其他的在 lfs 服务器上
: 测试回退到上个版本
git reset --hard HEAD~1
: --------------- 大小 322 KB --------------- 这时候的大小说明回退版本时在 lfs 上下载该版本的文件到本地, 本地体积增加
git reset --hard HEAD~1
: --------------- 大小 422 KB ---------------
: 修改文件
git reset --hard origin/HEAD
echo c>>isbin.bin
echo c>>text.txt
git add isbin.bin text.txt
git commit -m "添加c"
: --------------- 大小 524 KB ---------------
: 推送到远端
git.exe push --progress "https://github.com/wll8/bin" master
echo c>>isbin.bin
: 再来一次修改
echo d>>isbin.bin & echo d>>text.txt & git add isbin.bin text.txt & git commit -m "添加d" & git.exe push --progress "https://github.com/wll8/bin" master
: --------------- 大小 624 KB ---------------
再次克隆
验证经过多次推送后的大小变化。
: 从远端克隆
git clone https://github.com/wll8/bin bintest2
cd bintest2
: --------------- 大小 223 KB --------------- 看得出来多次推送也只在 git 上保存最后一次二进制文件
总结
经测确实是有效减少了 git 仓库的体积。
LFS(Large File Storage) 大文件存储是 git 的一个扩展。
在 git 拉取 或 推送 时在 lfs 服务器 下载 或 上传, 也就是没有把每个版本保存在 github 服务器上。
其实违背了 git 的理念, 它依赖 lfs 服务器, 本地并不是一个完整的仓库, 而且上传到 lfs 服务器 比 github 还慢 。
git 管理和存储二进制大文件的更多相关文章
- git 仓库中删除历史大文件
git 仓库中删除历史大文件 在git中增加了一个很大的文件,而且被保存在历史提交记录中,每次拉取代码都很大,速度很慢.而且用删除 提交历史记录的方式不是很实际. 以下分几个步骤介绍如何减小.git文 ...
- 如何在linux下使用git管理上传代码&误删文件修复
首先需要安装git,sudo apt-get install git,这时就可以下载代码了. 然后先在gituhub上新建一个仓库,然后先在本地建一个git目录,git init 然后再配置用户名和邮 ...
- [git 学习篇]git管理的是修改,并非文件
你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git管理的 ...
- git上传超过100m大文件
1.git出错如下错误时 执行如下可解决错误: git rm --cache '大文件路径' git commit --amend -CHEAD git push 2.当必须上传大文件时.需借助git ...
- postgresql存储二进制大数据文件
如果想把整个文件或图片存储在数据表的一个字段内,该字段可以选择二进制类型,然后将文件按二进制存储起来,文本文件也可以存在text字段内. 示例如下: 二进制类型bytea的操作(在最大值内,有内存限制 ...
- s3git 使用git 管理云存储
使用s3git 我们可以方便的基于git协议进行s3存储数据的版本管理,同时也提供了一个方便的golang 包, 我们可以集成到我们的应用中,但是有一点,目前已经没有再更新过了,但是设计理论很不错,实 ...
- .net解决大文件断点续传
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- asp.net解决大文件断点续传
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- .net实现浏览器大文件分片上传
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
随机推荐
- 30、git 使用
Git 一. 目标 (一) Git的操作 二. Git和SVN的区别 (一) SVN优缺点 1. 优点: (1) 管理方便,逻辑明确 (2) 易于管理,集中式服务器更能保证安全性 (3) 代码一致性非 ...
- MySQL数据库一些常用命令
输入mysql –u root(用户名) -p 回车后输入密码,就可以连接到mysql数据库. 1. 创建数据库:create database 数据库名称: 2. 删除数据库:drop databa ...
- linux基本介绍
Linux介绍 操作系统: 主要作用是管理好硬件设备,并为用户和应用程序提供简单的接口,以便于使用.作为中间人链接软件和硬件. 不同领域的操作系统: 1.桌面操作系统 Windows(用户群大).ma ...
- JavaScript基础知识(数据类型)
数据类型 布尔:true/fasle console.log(typeof true);// "boolean" Number : true -->1 false --> ...
- Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]
题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ...
- mysql创建表时符号``的作用
新建表语句如下: CREATE TABLE `course` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NU ...
- Struts2 学习
Struts2简介 1.概念:轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层.低侵入性,与业务代码的耦合度很低.Struts2实现了MVC,并提供了一系列API,采用模式化方式简化 ...
- python之数据库连接池DBUtils
DBUtils 是Python 的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: DBUtils :提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接 ...
- sublime设置tab为四个空格
在首选项->设置里: 添加: "tab_size": 4, "translate_tabs_to_spaces": true,
- 更改linux终端中用户名颜色
用户名的设置在-下.bashrc文件中,更改PS1变量的值,如果没有就自己加一行 PS1='\[\e[32m\][\u@\h \W]#\[\e[m\] ' 32代表的是绿色前景色,\[\e[m\]是关 ...