我刚刚创建了一个新的代码库并提交了初始版本。 工作目录大小为2 GB。但是.git目录却有15 GB之大。 为什么只有一个提交的git代码库要比工作目录大近8倍? 我做错了什么吗?有没有办法解决这个问题?
大型代码库的原因是您临时添加了“.hg”子目录的内容,但没有使用实际初始提交中的数据。让我们逐步追踪发生的情况:1. "git init": 创建一个带有少量元数据的".git"子目录。2. "git add .": 这将整个工作树复制到Git的索引(即暂存区)中 - 换句话说,包括项目中的所有文件,包括”.hg”目录中的所有文件。当我们说这些已经添加到索引时,这意味着所有文件内容都已添加到对象存储数据库中的“.git/objects”,并且“.git/index”文件指向所有文件。3. "git reset .hg": 这将从索引中删除“.hg”子目录。但是已添加到存储中的对象不会被删除,因为其他提交或索引条目可能会指向它们。(Git目前不跟踪指向对象的引用数量。它使用跟踪垃圾收集,而不是引用计数。)4. "git commit": 这是您执行的最后一个命令,将索引复制到新提交中,并将其存储到存储库中。解决问题的方法:- 如果您从空白存储库开始,并仅添加所需的文件,则可以在第一次避免文件膨胀,仔细排除“.hg”。 - 如果事后需要解决问题,则可以运行"git gc",希望未使用的对象被删除。
git gc
(运行git gc --help
以查看其含义)。我没有将此作为答案发布,因为我不知道您的存储库为什么会如此庞大,但是git gc
可能 有所帮助。 - Keith Thompsongit clone
还是git init
呢? - Tim Biegeleisengit init
git add .
git reset .hg
,然后git commit -m "init"
。 - PortMan