我正在尝试在本地和远程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
确定有道理,所以我尝试使用origin/master
切换到git checkout master
并告诉我:Already on 'master'
。是否还需要在远程目录中设置当前分支?我该怎么办?
答案 0 :(得分:20)
尝试
git push origin --delete feat
答案 1 :(得分:13)
从计算机中删除本地分支:
git branch -d <branch-name>
删除远程分支:
git push origin :<branch-name>
在您的情况下,上述陈述将是:
从计算机中删除本地分支:
git branch -d feat
删除远程分支:
git push origin :feat
答案 2 :(得分:5)
编辑(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
操作。
答案 3 :(得分:1)
当我想从原点删除母版时,我遇到了同样的问题。
假设您要删除母版,我分3个步骤解决了该问题:
转到您的存储库的GitLab页面,然后单击 “ 设置”按钮。
在默认分支中,将默认分支从母版切换到 另一个。
在受保护分支中,如果有任何保护,请取消保护主服务器。
然后再次尝试删除分支。
如果不是要删除的母版,只需对所需分支执行相同的步骤即可。
答案 4 :(得分:0)
如果您要删除多个分支,则任何受保护的分支(例如,默认分支,通常为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
答案 5 :(得分:-1)
删除分支
git branch -D RegistryDB(一个Git分支名称)
git push origin:registryDB