为什么我不能删除远程GitLab存储库中的分支? [英] Why can't I delete a branch in a remote GitLab repository?

查看:60
本文介绍了为什么我不能删除远程GitLab存储库中的分支?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在本地和远程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'。当前分支是否也需要在远程目录中设置?我该怎么做呢?

推荐答案

编辑(根据OP的评论-我没有使用过GitLab):GitLab有一个带有下拉菜单的Web界面。您需要位于"设置"视图(而不是"项目"视图)下的那个视图。在"默认分支"下的"设置"视图中选择一个分支,然后单击"保存更改"以设置服务器上的当前分支。

详细信息

您的想法是正确的,但您必须记住,涉及两个存储库-两个Git。

每当您收到前缀为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操作。

这篇关于为什么我不能删除远程GitLab存储库中的分支?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆