我有以下git树:
branch v2 => / --- [lots of work] --- [new version] --- ref_d
/
root --- ref_a --- ... --- ref_b (project reset)
\
branch v1 => \ --- [some works] --- ref_c
由于v1和v2确实不同,两个不同的团队将维护v1和v2,我希望两个独立的分支两个到不同的git存储库:
repo_v1 : from root to ref_c
repo_v2 : from ref_b to ref_d
我该怎么做? 感谢。
答案 0 :(得分:12)
以下假设您将两个单独的新回购设置设置为名为repo_v1
和repo_v2
的远程设备。
v1分支很简单:
git push repo_v1 ref_c:v1
v2分支并不那么难:
git checkout --orphan v2 ref_b
git cherry-pick ref_b..ref_d
git push repo_v2 v2
(git checkout --orphan <branchname> <startpoint>
创建一个全新的历史记录,它从指定的点开始,但没有任何提交的父项。)
答案 1 :(得分:0)
根据项目设置,我希望
1)为v1
创建新的仓库
git checkout v1
git remote add v1_repo git@gitlab.com:andrej/project-v1.git
git push v1_repo v1:master
2a)将v2
合并到master
分支中。
git checkout master
git merge v2
2b)如果您坚持要创建2个新项目,则可以从新合并的母版中创建新项目:
git remote add v2_repo git@gitlab.com:andrej/project-v2.git
git push v2_repo master
3)您可以通过删除v1和v2分支来整理原始仓库:
git checkout master
git branch -D v1
git branch -d v2
您必须在此处使用-D
强制删除分支v1
,因为v1
分支未合并。