概述
我有 Git 存储库,它作为来自其他地方的许多配置的存档:
- 200个目录
- 每个目录 100 个文件
- 每个文件 10K 纯文本
- 每天约 1000 次提交,通常编辑不到 10 行
- 1 家分店
- 1 个用户处理所有提交
- 所有其他只读的视图回购
在有人建议我尝试将这个 repo 分解成更小的 repo 之前,这不是一个选择,因为客户。
回购包含约 2 年的数据,但我们的客户只需要最后 90 天。
过程
90 天前,我使用此处描述的方法成功地将根嫁接到了提交上:
- git checkout -b newroot xyz_90_days_old_rev
- git 重置 abc_original_root_rev
- 混帐添加。
- git commit --amend -m '清除历史记录'
- git结账大师
- git rebase --onto newroot xyz_90_days_old_rev
问题是之后使用 git-filter-branch cleanup - 它需要 > 24 小时,这对用户来说是不可接受的停机时间。
我想改用 bfg-repo-cleaner ,但我不清楚:
- 它支持这个用例吗?
- 它适用于非裸回购吗?
PS:我现在知道这git checkout --orphan
会稍微优雅一些,但它并没有真正改变BFG
需要 repo 裸露而checkout
要求它不裸露的问题