首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git:无法缩小.git文件夹的大小

git:无法缩小.git文件夹的大小
EN

Stack Overflow用户
提问于 2021-02-26 14:21:35
回答 1查看 106关注 0票数 1

这是我的.git文件夹的大小:

代码语言:javascript
复制
$ du -sh .git
321M    .git

在过去,有几个巨大的文件被不小心地提交到了那里。

通过一些bizarre magic,我找到了丘比特和它们的斑点:

代码语言:javascript
复制
$ git rev-list --objects --all |   git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |   sed -n 's/^blob //p' |   sort --numeric-sort --key=2 |   cut -c 1-12,41- |   $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest


....
5c48fadaee41  492MiB android/java_pid3568.hprof
...

这些行为的作者承诺:

代码语言:javascript
复制
git log --all --full-history -- "android/java_pid3568.hprof"

commit cac160ab39b9c70f3d05f8194be8c3c0657161ad
Author: Incore <xxxx@mail.ru>
Date:   Thu Dec 10 18:34:34 2020 +0300

commit fc0cfc2f32ddd0f927169ad0514213f79795dd63
Author: Incore <xxxx@mail.ru>
Date:   Tue Dec 8 21:26:17 2020 +0300

之后,我试图重写我的历史记录,删除这个文件:

代码语言:javascript
复制
git filter-branch --force --index-filter   'git rm --cached --ignore-unmatch android/java_pid3568.hprof'   --prune-empty --tag-name-filter cat -- --all



Rewrite fc0cfc2f32ddd0f927169ad0514213f79795dd63 (19/376) (1 seconds passed, remaining 18 predicted)    rm 'android/java_pid3568.hprof'
Rewrite 540ced9097b7090bfd68279515178bf060db93ee (19/376) (1 seconds passed, remaining 18 predicted)    rm 'android/java_pid3568.hprof'

现在,我的git log显示历史上没有这样的文件:

代码语言:javascript
复制
git log --all --full-history -- "android/java_pid3568.hprof"

... empty response

但是,我的.git文件夹的大小并没有缩小:

代码语言:javascript
复制
$ du -sh .git
321M    .git

为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-26 15:45:51

包含巨大文件的提交仍然由reflog处理,因此不能仅由git gc垃圾收集。

您可以在以下问题的答案中找到一些很好的命令:How to remove unreferenced blobs from my git repo

喜欢

代码语言:javascript
复制
git reflog expire --expire-unreachable=now --all
git gc --prune=now

代码语言:javascript
复制
git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc

PS:哦,用https://rtyley.github.io/bfg-repo-cleaner/来做这样的清洁总是个好主意。比过滤分支更容易、更安全、更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66387507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档