git - 关于看起来未使用的 git big blob 的问题
问题描述
按照gitlab doc 中的文档:reducing_the_repo_size_using_git我正在从 GitLab 清理一个 repo,所以我将其导出,通过电子邮件获取链接,下载并解压。
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
$
出于好奇,我在我的 repo 中寻找最大的 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
$
使用哪个提交具有此 blobgit whatchanged
中公开的a 时相同
$ git whatchanged --all --find-object=8103683624
$
所以我很惊讶有这么大的斑点,什么都没有:
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>
这里不适用,顺便说一下 which-commit-has-this-blob问题是围绕创建一个中央 Git 存储库而不是关于理解一个大博客如何引用无提交/树
解决方案
推荐阅读
- python - Python 的 Turtle 的时间和按键事件
- deep-learning - ModelNet40 数据集的 PointNet Tensorflow 2.0 实现的训练精度不会增加
- java - 带有 XML 数据的 CLOB 字段到 Java 中的 DOM 对象
- spring-kafka - How can we pause Kafka consumer polling/processing records when there is an exception because of downstream system
- angular - 第一个实例角度后补丁值不起作用
- typescript - 为 redux 存储重新选择 createSelector 类型定义
- javascript - React Vis MarkSeries is throwing x function is not defined error
- jquery - 单击按钮时使用 AJAX 和 JQuery 从表中获取值
- android - Android 模拟器说无法播放此视频以用于外部存储
- javascript - 使用 Emscripten 在我自己的 C++ 类上链接 OpenCV.js 模块时出错