我打算从一个包含约 10000 个提交和 5000 个文件的存储库中提取一些文件到一个单独的存储库中。这些文件分布在多个目录中,并且这些目录中有不相关的文件。
git filter-branch
的 --subdirectory-filter
实际上不是一个选项,因为它只接受一个目录。此外,它不遵循重命名,因此部分历史记录(如果文件最初是在另一个目录中引入的)将丢失。
我目前的解决方案是:
git filter-branch --tree-filter 'fd -E 3166 -X rm -rf'
在哪里fd
is a faster find
, 3166
是所有提取文件的文件名的唯一部分。它的作用是遍历所有提交,找到所有不相关的文件并删除它们。这非常慢,但是需要数小时。
有没有更好的方法?
最佳答案
我猜你可以测试 filter-repo
(git upstream 建议使用它而不是 filter-branch)。在那里您可以指定多个文件夹....我想您可以提供您关心的所有目录,包括“当前”目录和历史目录。
关于git - 将一组给定的文件提取到存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615245/