gpt4 book ai didi

git - 如何从我的 Git 存储库中删除未引用的 blob

转载 作者:IT王子 更新时间:2023-10-29 01:22:50 25 4
gpt4 key购买 nike

我有一个 GitHub 存储库,它有两个分支 - masterrelease

release 分支包含导致存储库大小非常大(超过 250 MB)的二进制分发文件,因此我决定清理一下。

首先,我通过 git push origin :release 删除了远程发布分支。

然后我删除了本地的release 分支。首先我尝试了 git branch -d release,但是 Git 说 “错误:分支 'release' 不是你当前 HEAD 的祖先。” 这是真的,所以然后我执行了 git branch -D release 以强制删除它。

但我的存储库大小,无论是在本地还是在 GitHub 上,仍然很大。然后我运行了常用的 Git 命令列表,比如 git gc --prune=today --aggressive,但没有任何运气。

按照 Charles Bailey 在 SO 1029969 上的说明进行操作我能够获得最大 blob 的 SHA-1 哈希列表。然后我使用了 SO 460331 中的脚本找到 Blob ...虽然发现了较小的 Blob ,但五个最大的 Blob 不存在,所以我知道脚本正在运行。

我认为这些博客是发布分支的二进制文件,在删除该分支后它们不知何故被遗留下来。摆脱它们的正确方法是什么?

最佳答案

我向您介绍这个有用的命令,“git-gc-all”,保证删除所有您的 Git 垃圾,直到它们可能出现额外的配置变量:

git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 \
-c gc.rerereunresolved=0 -c gc.pruneExpire=now gc

您可能还需要先运行以下内容:

git remote rm origin
rm -rf .git/refs/original/ .git/refs/remotes/ .git/*_HEAD .git/logs/
git for-each-ref --format="%(refname)" refs/original/ |
xargs -n1 --no-run-if-empty git update-ref -d

您可能还需要删除一些标签:

git tag | xargs git tag -d

关于git - 如何从我的 Git 存储库中删除未引用的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com