2017-10-09 30 views
2

我有一个git存储库,其中有多个分支。其中一些分支是私人(个人)分支机构,这些分支机构意外地被推到了遥控器上。我没有能力删除遥控器上的分支。即 - 不能运行git branch -d/-D <branch_name>迁移Git存储库,同时删除一些分支并保留其他分支

现在,此git存储库需要迁移到新的存储库,但没有私有和功能分支。

是我唯一的选择做下列事情吗?

  • 创建一个新的空存储库(R1)并在本地克隆存储库。
  • 克隆R1内的旧版本库(R1')。
  • git checkout <feature_branch>
  • git branch -d <feature_branch>
  • git push origin --delete <feature_branch>

或者是否有更好更智能的方法呢?我有大约20个这些功能和私人/个人分支,我需要摆脱。

+0

*我没有删除遥控器上的树枝的能力*这是相当不寻常的:一般来说,如果你可以*创建*遥控器上的一个新的分支,可以*删除*也可以使用'git push --delete ...'或'git push '。 – torek

+0

我同意这是不寻常的。因此,我不得不创建一个新的存储库 - 不存在现有的分支。 (不是很有用,但如果它有帮助,我试图将回购从gitolite迁移到gitlab。) – user2611581

+0

啊,Gitolite有各种分支控制,是的。这解释了“如何”;你必须有权访问控制旋钮(如果管理员允许你这样访问,你可以通过'git push'来完成)重新设置它们以允许你删除分支。无论如何,有可能(或者可能不是)更好的方式...... – torek

回答

2

我试图从gitolite迁移的回购协议gitlab

在GitLab端,您可以创建一个空的新的回购协议。

在Gitolite端,您可以在本地克隆你的回购协议,删除分支,然后改变它的遥控器,并推回GitLab

cd /path/to/local/repo 

git branch -rd origin/a_private_branch1 
... 
git branch -rd origin/a_private_branchn 

创建local branch for each remaining remote branches

然后:

git remote set-url origin /url/to/new/gitlab/repo 
git push --mirror 
相关问题