如何将克隆的Git仓库改为可读写?Bitbucket仓库Push遇权限拒绝怎么办?
其实操作很简单,咱们一步步来:
- 首先查看当前仓库的远程地址配置,执行:
你会看到类似这样的输出,如果是git remote -vgit://开头的,那就是只读地址:origin git://bitbucket.org/your-username/your-repo.git (fetch) origin git://bitbucket.org/your-username/your-repo.git (push) - 接下来把远程地址改成可读写的版本,推荐用SSH地址(只要你配置了SSH密钥就不用每次输密码):
要是你习惯用HTTPS,也可以换成带用户名的地址:git remote set-url origin git@bitbucket.org:your-username/your-repo.gitgit remote set-url origin https://your-username@bitbucket.org/your-username/your-repo.git - 最后再用
git remote -v确认一下地址已经更新,之后就能正常推送修改了。
既然你已经加了SSH密钥但还是被拒,咱们从几个常见原因入手排查:
先确认SSH密钥是否真的配对正确
登录Bitbucket,进入个人设置 → SSH keys,把本地生成的公钥内容和这里的对比一下。本地查看公钥的命令是:cat ~/.ssh/id_rsa.pub注意要完全一致,别漏了开头的
ssh-rsa和结尾的注释,也别多了空格或者换行。检查本地Git是否用对了SSH密钥
如果你本地有多个SSH密钥,Git可能没用到你加到Bitbucket的那一个。先测试一下SSH连接:ssh -T git@bitbucket.org如果成功会显示
logged in as your-username.,要是失败,就新建或修改~/.ssh/config文件,指定Bitbucket用对应的密钥:Host bitbucket.org IdentityFile ~/.ssh/your-key-filename User git改完再测试一遍连接。
确认你在仓库里有写权限
有时候密钥没问题,但你在这个Bitbucket仓库里没有推送权限。进入仓库的Settings → Repository permissions,看看你的权限级别是不是能写(比如Owner、Write或者Admin)。检查远程仓库地址是否正确
再跑一遍git remote -v,确认推送地址是SSH格式的git@bitbucket.org:your-username/your-repo.git,而不是只读的git://或者不带权限的HTTPS地址。要是不对,就用第一个问题里的方法改地址。排查网络或代理问题
有些公司防火墙会拦截SSH连接,或者你本地的SSH代理配置有问题。可以试试切换到手机热点这类外部网络,再执行git push,看看能不能成功。
内容的提问来源于stack exchange,提问作者GettingStarted

