Git历史重写Bitbucket [远程拒绝] HEAD - >分支(预接收挂钩拒绝)

时间:2014-11-04 10:02:05

标签: git bitbucket

在Bitbucket上,使用Bitbucket网络界面,我错误地用自己的私人分叉同步了一个受祝福的回购。我想在祝福的回购中重写历史记录,以使其恢复正确的提交。

我克隆了包含我不正确的提交并在本地运行的祝福仓库

git reset --hard HEAD~1

在历史被搞砸的分支上。

这让克隆的回购再次回到我搞砸之前的提交。

然后我使用

将我的回购推送回Bitbucket
git push -f origin development

但出现以下错误

remote: permission denied to force push branch development
To git@bitbucket.org:blessed-repo/blessed-repo.git
 ! [remote rejected] HEAD -> development (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:blessed-repo/blessed-repo.git'

为什么我会收到此错误以及如何使git push正常工作?

1 个答案:

答案 0 :(得分:23)

在Bitbucket中,可以 limit push powers broken-link use branch permissions来阻止用户直接推送到分支机构。

从以上(旧的,不再可用的)文档...

  

用户可以自由地与其本地克隆中的分支进行交互。什么时候   他们试图推送到不允许使用的Bitbucket遥控器   推送到分支接收远程拒绝的消息   推。

您可以看到这对强制执行典型工作流程有何帮助。

启用直接推送到回购的分支

转到

回购> 设置> 分行管理> 防止在这些分支上重写历史记录(rebase)

然后在该页面上,删除您要推送的分支。

这样您就可以运行git push origin +HEAD

然后你应该将分支重新添加到列表中以防止随机推送到repo。