我有一个想要推送到 Bitbucket 和 GitHub 的存储库。由两者托管我的存储库至关重要。
有没有办法在 Git 中做到这一点?
您可以通过 git 使用多个远程存储库。但是我相信你必须分别推入你的两个遥控器。
例如,如果您的项目当前指向 github,您可以将当前远程存储库重命名为github
:
$ git remote rename origin github
然后,您可以添加另一个远程存储库,例如bitbucket
:
$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git
现在,为了将更改推送到 github 或 bitbucket 上的相应分支,您可以这样做:
$ git push github HEAD
$ git push bitbucket HEAD
相同的规则适用于拉取:您需要指定要从哪个遥控器拉取:
$ git pull github your_branch
$ git pull bitbucket your_branch
是的,你可以这么做。您不必推送两次,只需推送一次即可推送到两个远程存储库。我之前遇到过同样的问题,所以在这里写了如何做。 Git:从 Github 和 Bitbucket 推送/拉取
一些简单的解决方案。
这是最容易理解的方法,但维护起来最费力。
我们首先添加我们的新遥控器:
$ cd myproject
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git
$ git push bitbucket master
直接说不行吗?当然,每次我们提交任何更改时,我们都需要推送到我们原来的“原点”和新的远程“bitbucket”:
$ git push origin master
$ git push bitbucket master
不是很大的开销,但我相信它会随着时间的推移而增加。或者你可以创建一个`alias gpob="git push origin master && git push bitbucket master"。
使用此方法,我们将向现有的远程“来源”添加一个额外的 URL:
$ cd myproject
$ git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date
少了很多努力!
当然,一线希望有云,在这种情况下,虽然我们可以同时推送到多个 URL,但我们只能从原始“源”获取(您可以更改它,但这超出了本文的范围)。
最后,查看将从哪个遥控器获取:
$ git remote -v show
我也写过博客。
我也有类似的情况。就像我有一个现有的 BitBucket 分支,过去几个月我在其中管理或更新我的代码表单。
现在我的要求是将我的项目上传到 GitHub 中,并且只有一个“主”分支。
步骤1 -
这是我现有的 BitBucket 项目回购信息。
$ git remote -v show
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)
第2步 -
添加一个远程 github repo url -
$ git remote set-url origin --add https://github.com/<USERNAME>/<PROJECT_NAME>.git
现在,它也有 github 信息($ git remote -v show
)。
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)
origin https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)
第 3 步 -
重命名存储库以更好地理解 -
$ git remote add bitbucket https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git
$ git remote add github https://github.com/<USERNAME>/<PROJECT_NAME>.git
现在,信息已更新($ git remote -v show
)。
bitbucket https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
bitbucket https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
github https://github.com/<USERNAME>/<PROJECT_NAME>.git (fetch)
github https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
origin https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
origin https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)
第4步 -
是时候在 GitHub 中提交/推送整个项目了。
$ git add --all && git commit -m "first commit"
$ git push -u origin master
结果我得到了这个错误 -
Everything up-to-date
Branch 'master' set up to track remote branch 'master' from 'origin'.
remote: Repository not found.
fatal: repository 'https://github.com/<USERNAME>/<PROJECT_NAME>.git/' not found
第 5 步(SSH 密钥设置) -
经过几个小时的调查,我发现这是 SSH 关键问题。
因此,我为 BitBucket 和 GitHub 生成 SSH 密钥,并将这些密钥添加到我各自的帐户中。
第 6 步(设置 SSH 存储库 URL) -
https://
将 URL更改ssh
为 BitBucket 和 GitHub。
$ git remote set-url bitbucket git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git
$ git remote set-url github git@github.com:<USERNAME>/<PROJECT_NAME>.git
删除原点以更改原点 repo url。
$ git remote rm origin
添加第一个来源(BitBucket) -
$ git remote add origin git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git
添加第二个来源(GitHub) -
$ git remote set-url origin --add git@github.com:<USERNAME>/<PROJECT_NAME>.git
所有 repo url 更改为ssh
.
$ git remote -v show
bitbucket git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
bitbucket git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
github git@github.com:<USERNAME>/<PROJECT_NAME>.git (fetch)
github git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)
origin git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
origin git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
origin git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)
第 7 步 -
我已经添加并提交了代码,所以我只需要推送。
$ git push -u origin master
您确定要继续连接(是/否/[指纹])?是的
最后,整个项目在 master 分支推送到 GitHub。
将代码推送到两个分支 -
$ git push
仅将代码推送到 GitHub 或 BitBucket -
$ git push github master
或者 $ git push bitbucket master
更改分支 -
$ git checkout <BRANCH_NAME>
实时保存信息 -
第 5 步和第 6 步很有用如果您使用的是http://
repo url,请将其更改ssh
为以更好地维护 repo。
或者如果有人在第 1 步之后找到了repo url,最好使用第 5 步和第 6https://
步/$ git remote -v show
如果有人已经有ssh
repo,请忽略第 5 步和第 6 步。