我刚刚创建了一个新的存储库并创建了初始提交.
工作目录为2 GB.但.git目录高达15 GB.
为什么只有一次提交的git存储库几乎是工作目录的8倍?
难道我做错了什么?有没有什么办法解决这一问题?
大存储库大小是因为您临时添加了".hg"子目录的内容,但未使用实际初始提交中的数据.让我们一步一步地追踪发生的事情:
git init
:使用少量元数据创建".git"子目录.
git add .
:这将所有工作树复制到Git的索引(也称为暂存区域) - 换句话说,项目中的所有文件,包括所有".hg"目录文件.当我们说这些都被添加到索引,它意味着所有的文件内容被添加到"git的/对象"的对象存储库,而"git的/索引"文件中有指针的所有文件.
git reset .hg
:这从索引中删除了".hg"子目录.但是,不会删除已添加到存储中的对象,因为其他提交或索引条目可能指向它们.(Git目前不跟踪有多少引用指向一个对象.它使用跟踪垃圾收集,而不是引用计数.)
git commit
:这是您执行的最后一个命令,它将索引复制到新提交中并将其存储到存储库中.
解决您的问题:
如果从空白存储库开始并且只添加所需的文件,则可以首先避免文件膨胀,小心地排除".hg".
如果您想在事后修复问题,可以运行git gc
并希望删除未使用的对象.