配置双远程仓库后,推送至Bitbucket报错问题咨询
嘿,我来帮你解决这个双平台推送的问题~你现在已经把Bitbucket的地址加到了origin的push列表里,但推送Bitbucket时触发密码提示报错,本质是认证配置和推送流程的小问题,咱们一步步捋清楚:
先确认你的远程配置是否正常
你之前用git remote set-url --add把Bitbucket地址添成了origin的第二个push目标,这个思路是对的。先再确认下当前配置:
git remote -v
如果输出和你给出的一致,那push地址的配置没问题,问题出在Bitbucket的身份认证上。
解决Bitbucket的认证报错
Bitbucket现在已经不推荐直接用账号密码做HTTPS推送了(尤其是开了两步验证的账号),这里给你两种靠谱的解决方式:
方式1:用应用密码+凭证存储(HTTPS方式)
- 登录Bitbucket,进入「个人设置」→「应用密码(App passwords)」,创建一个新的应用密码,记得勾选「Repository write」权限(只给必要权限更安全)
- 下次推送时,当弹出
Password for 'https://my@bitbucket.org':的提示,输入刚才生成的应用密码就行 - 为了避免每次都输密码,让Git记住凭证:
# 全局永久记住凭证 git config --global credential.helper store # 或者临时记住1小时,适合公共电脑 git config --global credential.helper 'cache --timeout=3600'
方式2:改用SSH认证(更省心,推荐)
SSH认证不用每次输密码,配置一次就一劳永逸:
- 先生成SSH密钥(如果还没有的话):
ssh-keygen -t ed25519 -C "你的邮箱地址"
一路按回车默认生成就行,不用设密码(设了的话每次推送还要输密钥密码)。
2. 打开~/.ssh/id_ed25519.pub文件,复制里面的全部内容
3. 登录Bitbucket,进入「个人设置」→「SSH密钥」,把复制的公钥粘贴进去保存
4. 修改Bitbucket的远程地址为SSH格式:
git remote set-url --add origin git@bitbucket.org:my/remont.git
之后再推送就不会要密码啦~
确保双平台推送生效
配置好认证后,执行git push origin master就会同时推送到GitHub和Bitbucket。如果之前用了-u设置了上游分支,后续直接敲git push也会自动推两个平台。
另外,如果你不想把两个仓库都挂在origin下,也可以单独给Bitbucket加一个远程:
git remote add bitbucket git@bitbucket.org:my/remont.git
这样推送时可以分开执行:
git push origin master # 推GitHub git push bitbucket master # 推Bitbucket
嫌麻烦的话,还可以整个一键推送的别名:
git config --global alias.push-all '!git push origin master && git push bitbucket master'
之后敲git push-all就能一次性推两个平台了~
小提醒:如果是私有仓库,要确保你在Bitbucket的仓库里有写入权限哦!
内容的提问来源于stack exchange,提问作者Jekson

