标签:split 内容 创建 col cat 输出 filter 指定 拷贝
参考 https://printempw.github.io/splitting-a-subfolder-out-into-a-new-git-repository/
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter <name-of-folder> -- --all
这条命令同样会过滤所有历史提交,只保留所有对指定子目录有影响的提交,并将该子目录设为该仓库的根目录。
这里说明各下个参数的作用:
--tag-name-filter 该参数控制我们要如何处理旧的 tag,cat 即表示原样输出;
--prune-empty 删除空的(对子目录没有影响的)提交;
--subdirectory-filter 指定子目录路径;
-- --all 该参数必须跟在 -- 后面,表示对所有分支进行操作。如果你只想保存当前分支,也可以不添加此参数
拆分仓库也可以使用subtree更方便
git subtree split -P <name-of-folder> -b <name-of-new-branch>
subtree是把一个分支拆分到另一个分支,这样的话操作起来更方便,不会改写原来分支的内容
git filter-branch操作的时候会修改当前分支,也就是在当前分支的基础上做了一个切分,然后提交创建了一个修改。所以为了避免污染原来的分支,建议一个分支一个分支的操作,并且操作前,最好是切一个临时分支。
标签:split 内容 创建 col cat 输出 filter 指定 拷贝
原文地址:https://www.cnblogs.com/studywithallofyou/p/11771730.html