在Windows服务器上有一个自托管的git存储库(如果有人感兴趣,可以使用Bonobo)。由于二进制blob,存储库变得臃肿,我想剥离这些大blob沿着整个历史。
我看了bfg
/git filter-branch
,bfg-ish
和git filter-repo
。我认为我的问题是这些不变的,但听起来git filter-repo
是最值得推荐的。
最大的问题是我应该在存储库克隆(工作副本)上执行--strip-blobs-bigger-than 4M
,还是应该直接操作Bobono管理的托管裸存储库?如果我在客户端克隆上执行它,那么更改将如何传播到Bonobo?这些变化将是非常基本的,它们甚至可以提交吗?
我已经备份了所有东西做了一些过滤回收分析我在gitignore中包含了blob(尽管它们的修改仍然显示为更改)。
1条答案
按热度按时间2eafrhcq1#
我最终在托管的裸存储库上操作。看起来filter-repo是要在一个仓库的干净克隆上使用的:
所以我在一个干净的克隆上重试,指令运行了,但后来我对下一步该怎么做一无所知。不存在要提交或推送的文件更改本身,“Meta数据”被修改。有趣的是,该操作还从
.git/config
中剥离了[remote "origin"]
和[branch "master"]
,因此我需要重新建立远程和分支。所以我决定继续修改托管的裸存储库。该工具识别出它不是一个干净的克隆:
通过强制,Meta数据大小从1.3GB减少到150 MB,与在干净克隆元数据上执行类似。
这恰好是一个Windows环境,在那之后我开始了一个干净的克隆,我不得不重新信任Visual Studio中的存储库。到目前为止,我可以推动一些变化,我会报告回来,如果有什么似乎不工作。
如果你正在处理由GitHub或其他git服务管理的存储库,那就是另一回事了,在这种情况下,你将无法直接访问他们管理的裸存储库。不知道在这种情况下会发生什么。我想你可以以某种方式推动Meta数据的变化?应该有人评论。