需求
现在有如下需求,之前多个项目(Project A,Project B,Project C)混在了一个大的Project里面,不便于管理。 现在需要把Project C 单独拆分出来,并保留该项目之前的git记录。
解决
在此我们使用 git subtree 工具 来进行拆分,简单来说就是先把Project C的所有提交抽离成一个单独的分支,然后把该分支merge到一个全新的仓库。
git subtree split --prefix=<prefix> [OPTIONS] [<commit>]
Step1:
拆分项目Project C到 branchC分支
git subtree split -P ProjectC -b branchC
# 切换到新的分支
git checkout branchC
这时候Project C的内容以及log都被放到 branchC分支
Step2:
新建一个单独的项目ProjectC
mkdir ../ProjectC
cd ../ProjectC
git init
Step3:
在新项目中合并刚才split出来的分支
git pull ../Project branchC
# 添加远程仓库
git remote add origin *****
git push