如何解决关于一个看起来没有使用过的 git big blob 的问题
按照 gitlab doc: reducing_the_repo_size_using_git 中的文档,我正在清理 GitLab 中的存储库,因此我将其导出,通过电子邮件获取链接,下载并解压缩。
aaa_export$ git clone --bare --mirror project.bundle
cloning into bare repository 'project.git'...
Receiving objects: 100% (109830/109830),627.15 MiB | 63.75 MiB/s,done.
Resolving deltas: 100% (89023/89023),done.
aaa_export$
$ du -sh project.git
633M
$
然后我清理不必要的文件并优化本地存储库:
$ git gc --prune=Now --aggressive
Enumerating objects: 109830,done.
Counting objects: 100% (109830/109830),done.
Delta compression using up to 4 threads
Compressing objects: 100% (108121/108121),done.
Writing objects: 100% (109830/109830),done.
Selecting bitmap commits: 13458,done.
Building bitmaps: 100% (238/238),done.
Total 109830 (delta 89020),reused 19482 (delta 0)
$
$ du -sh project.git
633M # Not a surprise this working copy came from a gitlab export
$
出于好奇,我在我的仓库中寻找最大的 blob:
$ git verify-pack -v objects/pack/*idx |sort -n -k3 |tail -3
24c41d1b2132daac9a13910f839173da3890c991 blob 13464592 8520894 149667646
28678d4814faecf8c20a3c893e1ac93cd159a289 blob 19558229 19538291 167335758
8103683624212caadee8e609295addd24ec43db1 blob 21805631 15702989 237885293
$
所以我尝试从更大的 blob 中获取提交对象列表:
$ git cat-file -t 810368362
blob
$
$ git rev-list --objects --all | grep 8103683624
$
使用 git whatchanged
时与 Which commit has this blob? 中公开的相同
$ git whatchanged --all --find-object=8103683624
$
所以我很惊讶有这么大的 blob 什么都不对应:
SHA-1 type size size-in-packfile offset-in-packfile
8103683624212caadee8e609295addd24ec43db1 blob 21805631 15702989 237885293
我怎么知道这个 blob 是干什么用的?
注意:我们在一个裸仓库,所以 git log diff 和 describe 不适用,这就是为什么 which-commit-has-this-blob/#VonC 和 git log --find-object=<object-id>
在这里不适用,顺便说一句-commit-has-this-blob 问题是关于创建一个中央 Git 存储库而不是理解一个大博客是如何引用无提交/树的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。