我对git internals知之甚少,但我确实看到有一个.pack文件特别占用方式,比我的.git目录中的其他文件更多的空间(9 GB的repo&# 39; s 30 GB)。有没有什么方法可以安全地摆脱它而不会失去回购的完整性?
答案 0 :(得分:2)
packfile是git中的节省空间的机制。
每当提交对文件的更改时,都会创建包含新文件和旧文件之间更改的新对象。这意味着当提交新版本的文件时,git不必存储文件的多个副本。
来自git-scm.com:
packfile是一个单独的文件,包含从文件系统中删除的所有对象的内容。索引是一个包含该packfile偏移量的文件,因此您可以快速搜索特定对象。很酷的是,尽管在运行gc之前磁盘上的对象总共大约为22K,但新的packfile只有7K。您通过打包对象将磁盘使用量减少了。。
如果您对节省空间感兴趣,可以使用previous SO answer来描述如何缩小历史记录。然后,您可以运行git gc
重新打包您的包文件(没有'压缩'对象)。