Git 是否有方法在任何新提交上重复筛选器分支操作?

Git 是否有方法在任何新提交上重复筛选器分支操作?,git,git-filter-branch,Git,Git Filter Branch,我有一个包含几个项目的大型存储库。我需要创建另一个只包含这些项目子集的存储库。我可以在存储库的克隆上使用git filter branch实现这一点,如对其他问题的回答中所述,如下所示: <clone the source repository> git filter-branch --tag-name-filter cat --index-filter 'git rm -r --cached --ignore-unmatch --quiet <project1> <

我有一个包含几个项目的大型存储库。我需要创建另一个只包含这些项目子集的存储库。我可以在存储库的克隆上使用
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

git筛选器分支--标记名筛选器cat--索引筛选器'git rm-r--cached--ignore unmatch--quiet'--prune empty--all
rm-射频参考/原件
git reflog expire--expire=now--all
git-gc--aggressive--prune=now
这很好,但问题是执行此操作需要一个多小时(过滤了大约4000个提交)。因为我需要定期这样做,因为对源存储库进行了新的提交,所以这不是一个理想的解决方案

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


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

是的,我当然可以使用钩子来检测何时需要过滤操作,但我更感兴趣的是是否有方法只过滤新提交,不必再次过滤整个存储库。好吧,在某种程度上,您可以更改钩子中的提交。不过,我从来没有深入研究过。我遇到了完全相同的问题。任何帮助都将不胜感激。