2010-02-04 57 views
11

我想从中央git存储库中删除远程分支。通常的建议是'git push origin:branchname'或'git push origin:heads/branchname'。但是当我尝试的时候,我得到这个错误信息:无法删除git中的远程分支

*** Deleting a branch is not allowed in this repository
error: hooks/update exited with error code 1
error: hook declined to update refs/heads/branchname
To /opt/repo/myrepo.git
! [remote rejected] branchname (hook declined)
error: failed to push some refs to '/opt/repo/myrepo.git'

什么给?如果有帮助,我使用git版本1.5.4.3。

回答

19

有人在远程仓库中启用了禁止删除的钩子 - 通常这样做是为了让别人无法将重新设置的分支推送到仓库中。 (我保留了一个相当大的git存储库集合,并且它们都是以这种方式配置的,虽然没有挂钩。)

查看远程存储库中的挂接/目录。将会有一个名为“update”的脚本;这是什么拒绝让你删除分支。

+7

谢谢!有了这些信息,我可以解决这个问题:'git --git-dir /opt/repo/myrepo.git config --bool hooks.allowdeletebranch true'。做完这些之后,我可以使用'git push origin:branchname'来删除远程分支。 – twirlip 2010-02-05 03:27:04

+1

@twirlip:太棒了,很高兴你能够修复它。 – ebneter 2010-02-05 06:08:46

+1

我低估了答案,因为它提供了一个提示,但没有另外解释就没有解决问题。相反,第一个评论没有神奇:) – yoshi 2012-08-02 08:27:23

2

您可能必须登录到远程存储库并手动删除分支(即 - 从文件系统)。

3

我想这可能是消息所说的:远程存储库不允许任何删除历史记录。如果你真的需要这个功能,考虑不同的git托管(如果你不能调整你当前使用的设置)。

+1

存储库托管在本地(好吧,它在服务器上,我有root访问权限,无论如何)。如果可以对repo进行配置更改以启用此功能,我很想知道它。 – twirlip 2010-02-04 02:43:04