2017-10-09 47 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