为什么我的Git存储库比工作目录大得多?

时间:2015-12-09 01:36:58

标签: git

我刚刚创建了一个新的存储库并创建了初始提交。

工作目录为2 GB。但.git目录高达15 GB。

为什么只有一次提交的git存储库几乎是工作目录的8倍?

我做错了吗?有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:7)

大的存储库大小是因为你添加了" .hg"的内容。子目录暂时,但没有使用实际初始提交中的数据。让我们一步一步地追踪发生的事情:

  1. git init:创建" .git"带有少量元数据的子目录。

  2. git add .:这会将所有工作树复制到Git的索引(也就是暂存区域) - 换句话说,就是项目中的所有文件,包括所有" .hg"目录文件。当我们说这些已被添加到索引中时,意味着所有文件内容都已添加到" .git / objects"中的对象存储数据库,以及" .git / index&# 34; file包含指向所有文件的指针。

  3. git reset .hg:这删除了" .hg"索引的子目录。但是,未删除已添加到存储中的对象,因为可能的其他提交或索引条目已指向它们。 (Git当前不跟踪有多少引用指向一个对象。它使用跟踪垃圾收集操作,而不是引用计数。)

  4. git commit:这是您执行的最后一个命令,它将索引复制到新提交中并将其存储到存储库中。

  5. 解决您的问题:

    • 如果您从空白存储库开始并且只添加所需的文件,则可以首先避免文件膨胀,小心地排除" .hg"。

      < / LI>
    • 如果您想在事后解决问题,可以运行git gc并希望删除未使用的对象。