在Bitbucket上,我使用Bitbucket的网页界面,错误地将一个受祝福的repo与我自己的私有fork同步。我想重写受祝福的repo的历史,使它回到正确的提交。
我克隆了包含错误提交的受祝福的repo并在本地运行
git reset --hard HEAD~1
在历史被篡改的分支上。
这使克隆的回购协议回到了我搞砸它之前的提交状态。
然后我使用以下命令将我的repo推回到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条答案
按热度按时间b4lqfgs41#
在Bitbucket中,可以限制bucken-link use branch permissions的推送功率,以防止用户直接推送到分支。
从上述(旧的,不再可用的)文档...
用户可以自由地与本地克隆中的分支交互,当他们尝试推送到Bitbucket远程时,不允许推送到分支的用户会收到远程拒绝推送的消息。
您可以看到这对于强制执行典型的工作流是多么有用。
启用直接推送到存储库上的分支
后藤
Repo〉设置〉分支管理〉防止这些分支上的历史记录重写(重新定基)
然后在该页面上,删除要推送到的分支。
这样,您就可以运行
git push origin +HEAD
然后,您应该将分支重新添加到列表中,以防止随机推送到存储库。
zf2sa74q2#
我不确定,但Bitbucket似乎已更改。要允许更改,您应转到存储库设置,然后在工作流中单击分支限制,单击以编辑您尝试更新的分支,然后选择允许重写分支历史记录: