如何在Git中分离子目录但保留所有分支

AGr*_*ald 2 git git-filter-branch

我一直在关注这个问题的答案将Detach子目录分离到单独的Git存储库中,并且只有一个分支上的简单Subdirectories取得了一些成功,但现在我遇到了一个遍布多个分支的子目录,所以很简单

git filter-branch --subdirectory-filter SUBDIRECTORY HEAD
Run Code Online (Sandbox Code Playgroud)

不做这个工作.

我是否必须切换到每个分支并运行filter-branch命令,或者是否有可以通过完整历史记录进行空白更改的内容?

Lil*_*ard 7

HEAD你的命令的末尾指定裁判来处理.您可以为其提供任意数量的其他命令,包括--all指定绝对所有命令,--branches仅指定分支,或--remotes仅指定远程.您可能必须在这些选项前加上--告诉filter-branch这些是rev-list args.请注意,--all将尝试显式处理标记,这可能不是您想要的.您可以使用--branches --remotes指定所有非标记引用.您可能还想添加--tag-name-filter cat指向重写提交的重写标记 - 您的原始命令将保持这些标记不变.