如何使用Git Bash将同一份代码推送到GitHub不同仓库及解决origin已存在报错
报错原因说明
你遇到的报错和Git是否支持多远程推送完全无关,核心是远程别名的命名冲突:origin只是Git给远程仓库地址起的默认短别名,不是特殊功能标识。你之前已经执行过git remote add origin git@github.com:user/ci.git,已经把origin这个别名绑定到了ci仓库的地址,再次用同一个别名添加新的远程仓库,Git自然会判定重复抛出错误。
对应解决操作
可以根据你的实际需求选择对应方案:
方案1:同时保留ci、abc两个仓库的关联,实现双仓库同步
如果既需要保留原来ci仓库的推送关联,又要新增关联abc仓库,直接给新仓库起一个不重复的别名即可,不要使用已经被占用的origin:
- 先执行命令确认现有远程配置,验证origin已经绑定的是ci仓库地址:
git remote -v - 给abc仓库新增自定义别名(比如命名为
abc-remote,名字任意只要不与现有别名重复):git remote add abc-remote git@github.com:user/abc.git - 后续推送到abc仓库时,直接指定对应别名执行:
git push -u abc-remote master
如果嫌每次推送要执行两次命令太麻烦,还可以配置让origin别名同时绑定两个仓库的推送地址,执行一次git push就会同步推送到ci和abc两个仓库:
- 给现有origin补充abc仓库的push关联(原来的ci仓库push地址已经存在,不需要重复添加):
git remote set-url --add --push origin git@github.com:user/abc.git - 配置完成后,执行
git remote -v可以看到origin的push分支会同时列出ci、abc两个仓库的地址,后续执行git push origin master就会自动把代码同时推送到两个仓库。如果后续需要取消某个仓库的自动推送,执行git remote set-url --delete --push origin 对应仓库的git地址即可。
方案2:替换原有关联,以后默认推送到abc仓库
如果你不再需要关联原来的ci仓库,想把默认的origin直接指向新的abc仓库,直接修改现有origin的绑定地址即可,不需要新增别名:
- 直接覆盖origin的远程地址为abc仓库的地址:
git remote set-url origin git@github.com:user/abc.git - 之后正常执行推送命令即可:
git push -u origin master
内容的提问来源于stack exchange,提问作者user_1234
相关产品推荐
相关产品推荐

