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

时间:2010-11-30 21:59:39

标签: git git-filter-branch

我一直在关注这个问题Detach subdirectory into separate Git repository的答案,并且只在一个分支上的简单子目录取得了一些成功,但现在我遇到了一个遍布多个分支的子目录,所以很简单

git filter-branch --subdirectory-filter SUBDIRECTORY HEAD

不能胜任。

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

1 个答案:

答案 0 :(得分:7)

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