当我收到错误时如何删除远程分支?

use*_*638 5 git gitolite git-branch

我尝试了以下命令,但失败了.

git push origin :next
remote: error: denying ref deletion for refs/heads/next
To blah.git
 ! [remote rejected] next (deletion prohibited)
error: failed to push some refs to 'blah.git
Run Code Online (Sandbox Code Playgroud)

我正在使用gitolite,并且在钩子中找不到任何此错误消息.如何禁用它以便我可以删除或重命名此远程分支?当我运行git branch -r -d origin/next时,它似乎消失了,但是下一个git pull将它带回来.

Moh*_*our 5

确保在你的gitolite配置中,你有倒带标志,而不是RW使用RW+.这将允许您删除分支和提交.

git push -f origin :next


ebn*_*ter 5

这看起来像当您尝试推送到具有denyDeletes = true. 它旨在禁止您在遥控器中重写历史记录(通常带有denyNonFastForwards = true)。既然如此,就只能通过在远程删除分支来删除分支;--force不会工作。

  • 你在遥控器上设置的,对吗?如果这仍然不起作用,总是有蛮力的方法:转到远程并执行`git branch -D next`。 (2认同)
  • 即使使用 gitolite,裸存储库仍然是存储库。它响应 git 分支命令(例如 ssh 进入框和 cd 到 repo 的文件夹)。“git branch -D branchname”应该这样做。大写 D 表示强制删除。 (2认同)