Git在存储数据的时候,存储的都是完整的对象,并不是差异,叫做松散对象Loose Object,有时候你只改变了一点,但是同时会拥有近乎两倍大小的blob对象。
这样子做岂不是很不节省磁盘?所以Git会在每次push到远程的时候进行garbage collect操作,当然我们也可以自己手动改进行gc,如:
git gc
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), done.
Total 6 (delta 0), reused 0 (delta 0)
然后查看一下.git/objects下有哪些文件:
find .git/objects -type f
发现多了一些pack文件:
.git/objects/info/packs
.git/objects/pack/pack-abcde.idx
.git/objects/pack/pack-abcde.pack
当然也还有可能还有一些dangling的对象,这些对象是没有被其它引用的对象,git不会对其进行pack。
.pack文件存储了所有删除的对象,
.idx文件是索引文件,存储相应的偏移信息。
我们可以使用verify-pack命令显示pack的信息:
git verify-pack -v .git/objects/pack/pack-abcde.idx
a35a7ea3f7b55be91743c708d150b573116515ec commit 239 160 12
fb1c75a143de21f30004dab829b39f99d225d292 commit 187 128 172
ca2b7d42454d33b31cfc810592e8bd47f811decd tree 70 76 300
fd5d73ef7deb282cbf47826c58448597f24453ba blob 18 28 376
56166dc42a6a2f694e088694a2a2c90606e28f2d blob 16 23 404
4e1ba2916b4b903d2e5a2209cdcca7129a891c2f tree 36 46 427
non delta: 6 objects
objects/pack/pack-83c7f603b25c063accec33ee8869a6afb1e9fd0a.pack: ok
第一列显示对象的指针,即Hash值,第二列展示是什么类型的对象,第三列展示占用了多少字节。
原文:
http://blog.csdn.net/hongchangfirst/article/details/45339229
作者:
hongchangfirst
hongchangfirst的主页:
http://blog.csdn.net/hongchangfirst
Git在存储数据的时候,存储的都是完整的对象,并不是差异,叫做松散对象Loose Object,有时候你只改变了一点,但是同时会拥有近乎两倍大小的blob对象。这样子做岂不是很不节省磁盘?所以Git会在每次push到远程的时候进行garbage collect操作,当然我们也可以自己手动改进行gc,如:git gc然后查看一下.git/objects下有哪些文件:find
工作流其实不是一个初级主题,背后的本质问题其实是有效的项目流程管理和高效的开发协同约定,不仅是
Git
或SVN等VCS或SCM工具的使用。这篇指南以大家在SVN中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的PullRequest功能,体系地讲解了各种工作流的应用。行文中实践原则和操作示例并重,对于
Git
的资深玩家可以梳理思考提升,而新接触的同学,也可以跟着step
-
by
-
step操作来操练学习并在实际工作中上手使用。关于
Git
工作流主题,网上体系的中文资料不多,主要是零散的操作说明,希望这篇文章能让你更
深入
理解
并在工作中灵活有效地使用
Git
对象
Blob
对象
Blob
对象
即文件快照,
Git
暂存时会保存文件快照于目录.
git
/objects下。
git
init初始化的仓库下.
git
/objects默认创建空的pack和info子目录。
Git
的核心是一个简单的键值对数据库(key
-
value data store),可
理解
为文件目录和文件为键key,目录内文件内容为对应值value。
运行如下底层命令,向
Git
数据库插入内容。其中echo 'content'输出content文本,|为管道符,即前一命令的输出.
Git
简单使用说明
1安装msys
git
:
msys
git
是Windows版的
Git
,从http://msys
git
.
git
hub.io/下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“
Git
”
-
>“
Git
Bash”,蹦出一个类似命令行窗口的东西,就说明
Git
安装成功!
2 配置用户名:
git
config
-
-
global user.name "Your Name"
git
config
-
-
global user.email "email@example.com"
3、创建仓
git
branch
-
b name //新建分支 并切换分支
git
branch
-
d name //删除本地分支
git
branch
-
d
-
r name //删除远程分支 须推送到服务器
git
push origin:name
git
branch
-
m oldname newna
garbage.png
在使用NSJSONSerialization API转换NSData([JSONStr dataUsingEncdoing:NSUTF8ENCODING]),通常只要JSONStr 字符串格式正确,我们就可以轻松转换格式,NSString to NSDictionary.
如果不确定自己的JSON
Git
保存的是文件的快照,即:会保存每个文件的每个版本的完整内容,若是一个文件只做了一个小小的改动,比如只修改了一个字符,那岂不是除了这个字符的其他内容全部存了两遍?那能否让
Git
只完整的保存其中一个,另一个以版本差异的方式保存呢?其实,
Git
是可以做到的,
Git
最初向磁盘中存储
对象
时所使用的格式被称为“
松散
(loose)”
对象
格式,但是,
Git
还使用了一种更效的存储机制,被称为“包文件(packfile)”的二进制文件,以节省空间和提高效率。
首先,我们准备一个较大的文件repo.rb(22k),并将其添
如果你想取消
git
的http代理和https代理,可以使用以下命令:
git
config
-
-
global
-
-
unset http.proxy
git
config
-
-
global
-
-
unset https.proxy。这两个命令将从全局配置中删除http代理和https代理的设置。另外,如果你同时使用
Git
Hub和
Git
ee,需要根据需要设置代理配置。当使用
Git
Hub时,可以开启代理,设置命令为:
git
config
-
-
global http.proxy http://127.0.0.1:41091
git
config
-
-
global https.proxy http://127.0.0.1:41091。而当使用
Git
ee时,取消代理的命令为:
git
config
-
-
global
-
-
unset http.proxy
git
config
-
-
global
-
-
unset https.proxy。另外,你还可以配置
git
使用socks代理或http代理,具体命令如下:使用socks代理:
git
config
-
-
global http.proxy socks://127.0.0.1:10808
git
config
-
-
global https.proxy socks://127.0.0.1:10808;使用http代理:
git
config
-
-
global http.proxy http://127.0.0.1:10808
git
config
-
-
global https.proxy https://127.0.0.1:10808。