aln*_*h29 6 git git-filter-branch git-rewrite-history
我正在改写一个相当大的回购使用的历史,git filter-branch --tree-filter它花了几个小时.我看到git正在使用一个临时目录来存储它的中间工作.这是否意味着如果它被中断,可以重新开始重写?如果是这样,怎么样?
编辑
我正在做的操作是移动几个目录.这些目前在子目录中,但我现在需要它们在根目录中.
例如
dir1
- dir2
- dir3
- dir4
Run Code Online (Sandbox Code Playgroud)
变
dir1
- dir2
dir3
dir4
Run Code Online (Sandbox Code Playgroud)
当然,我的目录结构比这复杂得多,但这是我想要做的事情的要点.
Rob*_*ley 14
git filter-branch本身不支持暂停/恢复使用模式 - 虽然它将临时数据写入.git-rewrite文件夹,但实际上并不支持基于此目录的内容进行恢复.如果您git filter-branch在之前已中止filter-branch操作的存储库上运行,它将要求您删除该临时文件夹,或者使用该--force选项自行执行.
根本问题在于git-filter-branch大回购的运行缓慢 - 如果流程快得多,就没有动力去尝试简历.所以你有几个选择:
git-filter-branch非常密集IO,并且当您的存储库位于RAM中时运行速度会更快.--index-filter而不是--tree-filter- 它类似于树过滤器,但不检查文件树,这使它更快,但确实要求你根据git索引命令重写文件更改.git-filter-branch它本身是单线程的)该BFG回购清机是一种简单,快捷的替代git-filter-branch-大型回购协议是50-150x更快.这使你的工作需要几个小时,只需几分钟.
完全披露:我是BFG Repo-Cleaner的作者.
Roberto在他的回答中提到了这一点,但我想给它一个基准:如果您的git filter-branch操作需要很长时间才能完成,请考虑使用AWS高内存实例.
我曾经不得不filter-branch将35个不同的存储库合并在一起,每个存储库都有两年几十次的每日提交历史记录.我的脚本在25小时内无法在笔记本电脑上完成.它m2.4xlarge在亚马逊的一个实例上完成了45分钟.
总成本?
1.64美元 - 低于20盎司苏打水.
BFG听起来像一个伟大的工具,我鼓励任何经常重写历史的人试一试.但是,如果您只需要一些工作并轻松访问AWS,那将filter-branch非常简单.
2016年,这甚至更便宜.对于Spot Advisor来说,只需花费0.90美元/小时的品种即可获得"集群计算".
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |