微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于一个看起来没有使用过的 git big blob 的问题

如何解决关于一个看起来没有使用过的 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/#VonCgit log --find-object=<object-id> 在这里不适用,顺便说一句-commit-has-this-blob 问题是关于创建一个中央 Git 存储库而不是理解一个博客是如何引用无提交/树的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。