3

我有一个包含多个项目的大型存储库。我需要创建另一个只包含这些项目的一个子集的存储库。我可以使用git filter-branch存储库的克隆来实现这一点,如其他问题的答案中所述,如下所示:

<clone the source repository>
git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch --quiet <project1> <project2>' --prune-empty -- --all
rm -rf refs/original
git reflog expire --expire=now --all
git gc --aggressive --prune=now

这工作正常,但问题是执行此操作需要一个多小时(过滤了大约 4000 个提交)。由于我需要定期执行此操作,因为对源存储库进行了新的提交,所以这不是一个理想的解决方案。

有没有办法实现某种“增量”过滤器分支,当对源进行新提交时触发,并通过仅过滤新提交并将它们合并到过滤存储库来更新(而不是完全重新创建)以前过滤的输出?

(由于代码布局和历史原因,将项目分离到各自的存储库中是不切实际的。)

4

0 回答 0