12

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

我该怎么做?谢谢。

4

2 回答 2

14

以下假设您将两个单独的新存储库设置为名为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>创建一个从指定点开始但没有任何该提交的父级的全新历史记录。)

于 2012-06-08T07:52:56.437 回答
1

根据项目设置我宁愿

1)为v1

git checkout v1
git remote add v1_repo git@gitlab.com:andrej/project-v1.git
git push v1_repo v1:master

2a)合并v2master分支。

git checkout master
git merge v2

2b)如果您坚持创建 2 个新项目,那么您可以从新合并的 master 创建新项目:

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分支未合并。

于 2019-10-08T16:01:01.693 回答