新建Bitbucket仓库可克隆但无法推送,如何排查解决?
以下是针对你遇到的克隆正常但推送报错的排查方向:
检查仓库的用户权限
登录Bitbucket网页端,进入目标仓库的「设置」→「用户和权限」,确认当前关联的SSH密钥对应的账户拥有写权限(比如「写入者」或「管理员」角色)。克隆仅需读权限,推送需要写权限,新建仓库时可能默认配置了只读权限。查看分支保护规则
进入仓库的「设置」→「分支设置」,检查master分支是否开启了保护规则:比如要求通过Pull Request合并、禁止直接推送、或限制仅特定用户可推送。若存在这类规则,需调整规则或通过PR完成代码合并。确认远程分支名称匹配
当前Bitbucket新建仓库默认主分支为main而非master,执行以下命令查看远程分支:git ls-remote --heads origin若远程显示分支为
main,可将本地master重命名后推送:git branch -m master main git push origin main修复本地SSH密钥权限
即便ssh -T验证通过,本地私钥权限过宽也可能引发推送异常。执行以下命令修正权限:chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa(若你的私钥文件名不是
id_rsa,替换为对应文件名即可)排查多SSH密钥冲突
若本地同时配置了多平台SSH密钥(如Github+Bitbucket),需确认是否通过~/.ssh/config指定了Bitbucket对应的密钥:
编辑~/.ssh/config文件,添加如下配置(替换为你的密钥路径):Host bitbucket.org IdentityFile ~/.ssh/bitbucket专用密钥文件名 User git保存后重新测试推送。
核对远程仓库路径
登录Bitbucket仓库页面,复制官方提供的SSH路径,与本地git remote -v输出对比,检查用户名/工作区、仓库名是否存在拼写错误。确认Bitbucket账户的SSH密钥状态
进入Bitbucket个人设置→「SSH密钥」,检查本地当前使用的公钥(执行cat ~/.ssh/id_rsa.pub获取内容)是否已添加,且状态为「启用」,未被误删除或禁用。
内容的提问来源于stack exchange,提问作者randy

