git原理:pack打包
git向磁盘中存储对象使用“松散(loose)”对象格式。比如文件a.txt第一个版本大小是10k,第二个版本向其中添加了一行代码,假如此时文件为10.1k,那么第二个版本会重新产生一个1.1k的文件,这样会很浪费磁盘空间,所以git会时不时地将多个这些对象打包成一个称为“包文件(packfile)”的二进制文件,以节省空间和提高效率。在手动执行git gc的时候,或者向远程推送的时候,都会进行打包的操作。
$ git gc
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), done.
Total 4 (delta 0), reused 0 (delta 0)
$ find .git/objects/ -type f
.git/objects/bd/9dbf5aae1a3862dd1526723246b20206e5fc37
.git/objects/d6/70460b4b4aece5915caf5c68d12f560a9fe3e4
.git/objects/info/packs
.git/objects/pack/pack-5e00a7e5254491edada3599d9091d49afb16c975.idx
.git/objects/pack/pack-5e00a7e5254491edada3599d9091d49afb16c975.pack
执行git gc会主动出发git的打包机制,打包以后,会在 .git/objects/pack文件夹中产生两个文件,其他的文件都是在此次打包过程中,git认为不能是摇摆的文件,一般是没有被添加到任何提交记录中的文件。
.pack 是包文件,这个文件包含了从文件系统中移除的所有对象的内容
.idx是索引文件,这个文件包含了包文件的偏移信息
备注:
1.可以通过git verify-pack命令来查看包文件,但是我不会。。。。
2.在打包以后,git会在第二个版本中存储完整的文件,而在第一个版本中存便宜,这样做的目的是,git认为检出第二个版本的概率要大于检出第一个版本的概率
查看git中各种文件的大小:
$ git count-objects -v
count: 0
size: 0
in-pack: 15
packs: 1
size-pack: 8
prune-packable: 0
garbage: 0
size-garbage: 0
git原理:pack打包的更多相关文章
- git的压缩原理;git的pack文件;git gc操作原理;Resolving deltas: 100% (2695/2695), done.做了什么
文件含义 verify-pack -- validate packed git archive files .git/objects/pack/.pack为压缩后的文件,把.git/objects/下 ...
- Git原理与命令大全
Git (wiki: en chs )是一个免费开源的分布式版本控制系统,由linux内核作者linus Torvalds开发,大型开源项目linux kernel.Android.chromium ...
- git原理及如何选择分支模式
一.git 原理介绍 1.git的四个工作区域 Git有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或Git Direc ...
- dotnet pack 打包文件版本号引起 "Could not load file or assembly" 问题
如果不是遇到,真的不会想到,代码世界的问题真是千奇百怪,这次遇到的是 dotnet pack 打包文件版本号引起的问题. 之前进行 nuget 打包都是在 Visual Studio build 时进 ...
- Git原理入门简析
为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...
- Git原理入门解析
前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...
- git原理学习记录:从基本指令到背后原理,实现一个简单的git
一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...
- Git原理及常用操作命令总结
git原理介绍及操作 git 原理——
- Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) (转)
git pull的时候遇到 Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) y 于 ...
随机推荐
- Nginx通过CORS实现跨域(转)
如果前端有nginx方向代理,跨域配置在前端反向代理nginx上 要做跨域域名限制 什么是CORS CORS是一个W3C标准,全称是跨域资源共享(Cross-origin resource shari ...
- Jquery全选与反选点击执行一次的解决方案
在做项目时遇到一个bug,checkbox全选与反选功能,只能点击一次,再点就不起作用了,为了解决此问题,我查找了好多资料,下面把具体解决方案整理分享给大家,需要的朋友可以参考下: 代码需求, 使用a ...
- Atitit.atiDataStoreService v2 新特性
Atitit.atiDataStoreService v2 新特性 1.1. V1 基础实现1 1.2. V2 增加了对 $uuid $cur_uid参数的支持1 1.3. 增加了fld ...
- Creating Dialogbased Windows Application (1) / 创建基于对话框的Windows应用程序(一)新建窗体 / VC++, Windows
创建基于对话框的Windows应用程序(一) —— 新建窗体 1.新建一个Visual C++的Empty Project. 2.在Solution Explorer中右键Add New Item, ...
- UML类图详解_关联关系_多对多
在关联关系中,很多情况下我们的多重性并不是多对一或者一对多的,而是多对多的. 不过因为我们要考虑里面的导航性,如果直接搞的话就是需要去维护两群对象之间多对多的互指链接,这就十分繁杂且易错.那么我们怎么 ...
- 21. Merge Two Sorted Lists【easy】
21. Merge Two Sorted Lists[easy] Merge two sorted linked lists and return it as a new list. The new ...
- win7安装RabbitMQ
1.下载并安装erlang http://www.erlang.org/downloads 2.下载并安装RabbitMQ http://www.rabbitmq.com/install-window ...
- AngularCSS 的引入: CSS On-Demand for AngularJS
1) Include the required JavaScript libraries in your index.html (ngRoute and UI Router are optional) ...
- spring boot 打包报错
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.3.0.RELEASE:repac ...
- 使用Crypto++库编译出错 解决办法
错误信息: >------ 已启动生成: 项目: testCrypto++, 配置: Debug Win32 ------ >正在编译... >main.cpp >正在链接.. ...