[英]Why can't I delete a branch in a remote GitLab repository?
我正在嘗試在本地和遠程GitLab存儲庫中刪除分支。 它的名字是origin/feat
。 我試過git push --delete origin feat
。 Git抱怨說:
remote: error: By default, deleting the current branch is denied, because the next
remote: 'git clone' won't result in any file checked out, causing confusion.
remote:
remote: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: current branch, with or without a warning message.
remote:
remote: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/feat
OK很有意義,所以我嘗試使用git checkout master
切換到origin/master
,它告訴我: Already on 'master'
。 是否還需要在遠程目錄中設置當前分支? 我該怎么辦?
嘗試
git push origin --delete feat
要從您的計算機中刪除本地分支:
git branch -d <branch-name>
要刪除遠程分支:
git push origin :<branch-name>
在您的情況下,上述陳述將是:
要從您的計算機中刪除本地分支:
git branch -d feat
要刪除遠程分支:
git push origin :feat
編輯(OP-I的評論未使用GitLab):GitLab有一個帶下拉菜單的Web界面。 您需要在“設置”視圖下(而不是“項目”視圖)下的那個。 在“默認分支”下的“設置”視圖中選擇一個分支,然后單擊“保存更改”以在服務器上設置當前分支。
你有正確的想法,但你必須記住,有兩個存儲庫 - 涉及兩個Gits。
每當你得到帶有remote:
前綴的文本時,這意味着文本來自另一個Git 。 因此,當你讓你的Git要求其他Git刪除feat
,另一個Git抱怨該feat
是當前的分支。
因此:
是否還需要在遠程目錄中設置當前分支?
是的(好吧,“而不是”而不是“也”)。
我該怎么辦?
通常,與使用任何存儲庫執行此操作的方式相同:登錄, cd
到存儲庫目錄,然后運行git checkout
。 但是在服務器上有可推送的存儲庫存在一兩個障礙:
它可能是一個--bare
存儲庫,因此您無法直接使用git checkout
。 這里的技巧是使用git symbolic-ref
來更新HEAD
:
git symbolic-ref HEAD refs/heads/master
當然,這假設您可以登錄(參見第一點)。 例如,如果有一個允許您更改遙控器上當前分支的Web界面,則必須為您執行此git symbolic-ref
操作。
當我想從原點刪除master時,我遇到了同樣的問題。
假設您要刪除主服務器 ,我通過3個步驟解決了問題:
轉到存儲庫的GitLab頁面,然后單擊“ 設置 ”按鈕。
在“ 默認分支”中 ,將默認分支從主分支切換到另一分支。
在受保護的分支中 ,如果有任何保護,請取消保護主數據。
然后再次嘗試刪除分支。
如果它不是您要刪除的主數據庫,只需按照所需分支執行相同的步驟即可。
如果你試圖刪除多個分支,任何受保護的分支(例如默認分支,通常是master
分支)將導致整個請求失敗,因此可以嘗試一次刪除一個,或者排除已知的受保護分支。
例如,我試圖刪除合並的分支
$ git fetch mygitlabremote --prune; \
git branch --remotes --list mygitlabremote/* --merged \
| cut -d/ -f2 | grep -v master \
| xargs git push mygitlabremote --delete
$ git fetch mygitlabremote --prune
刪除分支
git branch -D registryDB(一個Git分支名稱)
git push origin:registryDB
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.