《Pro Git 2》学习笔记_Chapter 10_Maintenance_DataRecovery_RemoveObject

Maintenance

Git可以通过自动垃圾回收的方式,有效的利用存储空间,一般.git/objects/目录下的对象是以松散的方式存放的,但当这些松散对象的个数超过7000时,git会自动进行压缩,形成pack文件,当pack文件多于50个时,Git回把多个pack文件压缩成为一个pack文件

此外,垃圾回收的功能还会对.git/refs/中的内容进行压缩,存入.git/packed-refs文件中。

也可以手动运行Git的垃圾回收功能:git gc     (gc表示garbage collection)

还可以设置自动垃圾回收:git gc --auto,至于触发回收动作的条件可以通过配置gc.auto各gc.autopacklimit来进行设定

DataRecovery

当你不小心失支了对某些commit对象的引用时,可以尝试的恢复办法有:

查看reflog日志:git reflog   或  git log -g ,并重新建立分枝索引

当reflog 也不可用时,可以使用:git fsck --full 对git仓库的文件系统进行完整性检查,列出那些没有被引用过的对象,从而重新获得它们

reflog记录每一次HEAD改变时的值,提交或改变分枝时,reflog都会更新


RemoveObject

这一节太难了,原书510页,用的时候就重看吧。

记几句主要的命令来作一个思维串引:

git rm <to-be-deleted-file-name>从仓库中删除文件

git count-objects -v显示仓库中对象的统计信息

git verify-pack <packfilename>查看打包文件的内容

git rev-list 

git filter-branch

git prune --expire now删除仓库中过期的对象



你可能感兴趣的:(git,Maintenance,DataRecovery,removeobject)