如何避免 git 自动创建.pack 文件?

如何避免 git 自动创建.pack 文件?

在一个大项目中。

cd project
git init 
git add .
ls .git/objects/pack # big pack file

如果我想解压 .pack,我需要git unpack-objects < .git/objects/pack/pack-.pack每次之后运行git add .

如何避免 git 自动创建 .pack 文件?

git repack我希望 git在运行时只创建 .packgit gc

我已经尝试过了git config gc.auto 0,但是如果 repo > 3GiB,git 仍然会创建包文件。

答案1

您想要做的事情通常是不可能的。您可以配置gc.auto为禁用git gc,这将阻止 Git 定期重新打包松散对象。但是,在某些情况下,例如批量签入,Git 将始终创建一个打包文件,因为这比写入大量松散对象更高效、更有效。

一般来说,将数据存储在包文件中通常比存储在松散对象中更高效、性能更高,因此 Git 在某些情况下会这样做。值得注意的是,如果您有大量松散对象,则枚举对象可能会变得异常缓慢,因为必须从目录列表中读取许多对象。因此,在某些操作(如批量签入和某些类型的提取)中,Git 将维护或创建一个包文件,因为替代方案的性能非常差,并且开发人员不希望添加仅对希望使其存储库变得无法使用的缓慢的人有用的选项。

Git 没有总是写入打包文件,因为对于少量对象,写入松散对象可能会更快。但是,随着松散对象数量的增加,定期重新打包很重要。

所有这些功能都不会阻止您git repack仅在需要时运行或禁用自动垃圾收集;它仅用于以当时正在进行的操作最有效的方式存储数据。

相关内容