git子项目拆分方法

常见的项目分拆的方式

git subtree split

#拆分子目录到分支
git subtree split --prefix=hogwarts-ppt-framework -b ppt
#切换到分支检查文件列表
git checkout ppt
#此时其他目录下的文件也在,不是不在当前的分支里,不影响,只需要检查自己分支下的文件列表即可。
git ls-files
#添加子项目仓库
git remote add ppt git@gitlab.ceshiren.com:ceba/tech/hogwarts-ppt-service.git
#推送
git push ppt ppt:main

git filter-repo

git-filter-repo --path hogwarts-plantuml-agent --path src/hogwarts_plantuml_agent  --path-rename hogwarts-plantuml-agent/:

需要注意 --path-rename 的参数需要带上/,不然会报错

总结

git fitler-repo比subtree更强大,可以补更多的历史,但是在多次move后,也是不能完整暴露历史信息,只能保留到最近一次的move信息。