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

Rob*_*lty 12 git bitbucket

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

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

git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)

在历史被搞砸的分支上.

这让克隆的repo回到了它之前的提交状态.

然后,我继续将我的回购推回到Bitbucket

git push -f origin development
Run Code Online (Sandbox Code Playgroud)

但得到以下错误

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'
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误以及如何才能完成git push工作?

Rob*_*lty 28

在Bitbucket中,可以限制推送功率以防止用户直接推送到分支机构.

从上面的文档......

用户可以自由地与其本地克隆中的分支进行交互.当他们试图推送到Bitbucket遥控器时,不允许推送到分支的用户会收到一条消息,指出遥控器拒绝推送.

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

启用直接推送到repo上的分支

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

然后删除你要推送的分支.

这将使您运行 git push origin +HEAD

然后,您应该将分支重新添加到列表中,以防止随机推送到仓库.