我有一个 GitHub 存储库,有两个分支 -master and release.
The 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 的说明进行操作:苏1029969 https://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big/1036595#1036595我能够获得最大 blob 的 SHA-1 哈希值列表。然后我使用了来自的脚本SO 460331 https://stackoverflow.com/questions/460331/git-finding-a-filename-from-a-sha1/460417#460417找到斑点...并且五个最大的斑点不存在,尽管找到了较小的斑点,所以我知道脚本正在运行。
我认为这些博客是来自发布分支的二进制文件,并且在删除该分支后它们以某种方式留下了。摆脱它们的正确方法是什么?
我向您展示这个有用的命令“git-gc-all”,保证删除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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)