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