使用go get拉取GitHub代码后无法推送至本地Bitbucket服务器的咨询
问题根源&解决办法
兄弟,你这个问题我太熟了!核心原因就是go get拉代码的时候,自动把本地Git仓库的远程源设成GitHub了,你往本地Bitbucket推当然会失败——毕竟Git默认是往origin远程推的嘛。而你下zip解压的文件夹根本没关联任何远程,所以能自己加Bitbucket的远程,自然就能推了。
两种解决路径,看你选哪种
方法一:修改已拉取仓库的远程源
如果你已经用go get把代码拉到c:\gopath\src里了,直接调整远程源就行:
- 打开命令行,进入你的仓库目录,比如:
cd c:\gopath\src\github.com\你的用户名\你的项目名 - 先确认当前的远程源,看看是不是指向GitHub:
git remote -v - 删除原来的GitHub远程:
git remote remove origin - 把本地Bitbucket的仓库地址添加为新的
origin:git remote add origin <你的本地Bitbucket仓库地址,比如ssh://xxx@your-bitbucket-server/xxx/yyy.git> - 最后推送代码,第一次推送记得加
-u关联分支:
注意:如果远程仓库已有内容,建议先拉取合并后再推送,避免冲突git push -u origin main
方法二:先克隆Bitbucket仓库,再关联GitHub上游(更规范)
如果还没拉代码,或者想按Go项目标准流程操作,这种方式更稳妥:
- 从本地Bitbucket克隆仓库到GOPATH对应的路径(Go的导入路径要求为
github.com/xxx/yyy,所以路径要匹配):git clone <Bitbucket仓库地址> c:\gopath\src\github.com\xxx\yyy - 进入仓库目录,把GitHub原仓库添加为上游远程,方便后续拉取更新:
git remote add upstream <GitHub原仓库地址> - 以后需要从GitHub拉取最新代码时,执行:
git pull upstream main - 推送代码到本地Bitbucket时,直接推送到
origin即可:git push origin main
额外提醒
- 先确保本地Bitbucket已经创建好空仓库,否则推送会报错
- 使用HTTPS地址推送时,可能需要输入Bitbucket的账号密码;使用SSH地址的话,提前把SSH密钥配置到你的Bitbucket账号中
- 如果你使用Go 1.11及以上版本,建议开启Go Modules模式,不用严格依赖GOPATH路径:
之后的拉取依赖、推送代码操作和普通Git仓库一致,灵活性更高go mod init github.com/xxx/yyy
内容的提问来源于stack exchange,提问作者user1619524
相关产品推荐
相关产品推荐

