将git分支拆分为单独的repo

时间:2012-06-08 07:49:47

标签: git

我有以下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

我该怎么做? 感谢。

2 个答案:

答案 0 :(得分:12)

以下假设您将两个单独的新回购设置设置为名为repo_v1repo_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分支未合并。