我们在一个私人托管的Git-Lab实例上有一个大型存储库。一年前,这种回购是从另一家公司迁移而来的,git历史在迁移中被改写了各种原因,还安装了额外的git-替换参考资料,以便与旧的文档引用兼容。
以前,有数百个试验性分支,其中许多从未合并,最终一文不值,老开发人员懒得把它们移除。从那时起,新回购的分支机构就被清理干净了,但据报道,它在GitLab中的规模仍显示出许多千兆字节。这是没有意义的,一个新克隆的git&git-gc‘’ed存储库将只占用该空间的一半。
在GitLab配置中按下“家政”功能并不能修复它,其大小几乎与移除实验分支之前的大小相同。我唯一的解释是旧的git-替换引用的存在,它仍然显示在一些提交数据上,尽管这些数据现在应该已经消失了。
亲爱的互联网,有什么好办法
发布于 2022-06-04 11:50:14
Git在这方面没有内置的任何东西,主要(我想)是因为很明显,“孤儿”的定义是在旁观者的眼里。因此,您需要编写自己的程序/脚本,以确定哪一种替换引用来丢弃。
请注意,如果您愿意在每个人从“旧回购”切换到“新回购”时使用旗日,则可以使用git filter-branch
(旧的、过时的但仍然有效)或git filter-repo
(尚未与Git发行版一起分发的热门新方法)来构建一个存储库,在该存储库中,所有的替换都会完成到一个全新的历史中。这要容易得多,除了旗标日之外,当然,由于新历史有新的散列is,基于原始散列is的任何东西都会停止工作。
发布于 2022-06-04 16:10:04
test -z
输出git -P branch -a --contains <named-ref>
:
将指定的ref推送到服务器。https://stackoverflow.com/questions/72498019
复制相似问题