出于无法控制的原因,我正在使用包含许多相似内容的副本的存储库(小型OS)。这意味着虽然回购规模很小,但工作目录需要花费多个小时才能在我的系统上签出。
正在执行的特定任务是执行git replace --graft
以连接线性历史记录,然后执行git filter-branch --tag-filter cat -- master
以使更改永久生效。
我的问题是筛选器分支需要一个干净的工作副本(例如由git checkout .
或标准git clone <URL>
生成)。这将运行时间增加到几个小时,这是不希望的。有更快的方法吗?实际的重写大约需要30秒(所有blob都保持不变,只是指针改变了)。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以创建一个裸克隆并在那里进行所有过滤:
git clone --bare source bare
cd bare
git filter-branch master # this is a no-op here, but you get the idea