filter-branch 不会删除孤立分支

filter-branch wont delete orphan branches

我有一个大而旧的项目,我想把一个文件夹变成一个子模块

我用过

git filter-branch --subdirectory-filter <folder name> -- --all

将其与项目的其余部分分开,并保留与其相关的所有历史记录

它做了我想要的,但有一些与文件夹无关的提交
经过一番研究后,我发现所有不相关的提交都来自两个孤立分支

我做了更多研究,发现孤儿分支的提交包含在

git rev-list --all

问题是,如果孤儿分支与我指定的文件夹没有任何关系,为什么不删除它们?

如果我不能在同一命令中删除它们的历史记录,我该怎么做才能删除所有孤立分支的历史记录?

编辑:
我已经尝试使用 --prune-empty 选项无济于事

您可以尝试添加 --prune-empty 选项,它将删除保留子目录不变的提交。

解决方案是运行以下命令:

git push origin : <orphan_branch_name> --force

或者,或者 - 在 运行ning `filter-branch 命令之前,运行 这个:

git remote in `git branch -r | grep -v "<orpan_branch_names>"; do git checkout --track $remote; done

其中 <orpan_branch_names> 是用 |(or)

分隔的孤立分支名称