为什么我不能删除远程GitLab存储库中的分支?

smc*_*mcs 15 git 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
Run Code Online (Sandbox Code Playgroud)

OK很有意义,所以我尝试切换到origin/mastergit checkout master,它告诉我:Already on 'master'.是否还需要在远程目录中设置当前分支?我该怎么办?

Cha*_*les 29

尝试

git push origin --delete feat

  • 其中“feat”是分支名称!+1 (2认同)

kk.*_*kk. 20

要从您的计算机中删除本地分支:

git branch -d <branch-name>
Run Code Online (Sandbox Code Playgroud)

要删除远程分支:

git push origin :<branch-name>
Run Code Online (Sandbox Code Playgroud)

在您的情况下,上述陈述将是:

要从您的计算机中删除本地分支:

git branch -d feat
Run Code Online (Sandbox Code Playgroud)

要删除远程分支:

git push origin :feat
Run Code Online (Sandbox Code Playgroud)


tor*_*rek 6

编辑(按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
    
    Run Code Online (Sandbox Code Playgroud)

    当然,这假设您可以登录(请参见第一点)。举例来说,如果有一个Web界面可以让您更改遥控器上的当前分支,那么它将必须git symbolic-ref为您执行此操作。


小智 5

当我想从原点删除主人时,我遇到了同样的问题。

假设您要删除 master,我分 3 个步骤解决了该问题:

  1. 转到您存储库的 GitLab 页面,然后单击“设置”按钮。

  2. Default Branch 中,将默认分支从 master 切换到其他分支。

  3. Protected Branches 中,如果有任何保护,则取消对 master 的保护。

然后您再次尝试删除分支。

如果它不是您要删除的 master,只需对所需的分支执行相同的步骤即可。

  • 设置比“存储库”比默认分支。 (2认同)