在Bitbucket上重写Git历史记录 [remote rejected] HEAD -> branch (pre-receive hook declined)

14

在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 正常工作?

2个回答

35
在Bitbucket中,可以使用分支权限来防止用户直接向分支推送,限制推送权限已损坏链接使用分支权限。从上面的(旧的,不再可用的)文档中可以看出... 用户可以自由地与其本地克隆中的分支交互。当他们尝试推送到Bitbucket远程时,不允许向分支推送的用户会收到一个消息,告诉他们远程拒绝了推送。您可以看到这对于强制执行典型的工作流程非常有用。要在存储库上启用直接向分支推送,请转到 存储库 > 设置 > 分支管理 > 防止这些分支上的历史记录重写(rebase),然后在该页面上删除您要推送的分支。
这将使您能够运行git push origin +HEAD 然后,您应该重新将该分支添加到列表中,以防止对存储库的随机推送。

0

我不确定,但似乎Bitbucket已经发生了变化。为了允许它,您应该进入存储库设置,在工作流程中单击分支限制,单击要更新的分支的编辑,并选择允许重写分支历史记录

Allow rewriting branch history


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接