如何为一个项目同时使用Bitbucket和GitHub?


94

我有一个要推送到Bitbucket和GitHub的存储库。两者都托管我的存储库至关重要。

在Git中有办法做到这一点吗?


4
这似乎很有用。尤其是当一个存储库关闭时。目前,bitbucket崩溃了,我基本上无法完成我的工作。
不道德的,2015年

Answers:


117

您可以将多个远程存储库与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

9
注意未来的访问者,您的.ssh/config文件是实现此设置的关键。添加Host github.comHost bitbucket.org以标识IdentityFile要使用的。这样一来,您就不会在尝试在bitbucket和github之间来回交换权限时遇到权限被拒绝的错误。希望这对某人有帮助。
Ultimater


28

一些简单的解决方案。

多个遥控器独立推送(和获取)

这是最容易解决的问题,但也是维护工作的最大努力。

我们首先添加新的遥控器:

$ 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的单个远程服务器被连续推送(和获取)

使用这种方法,我们将向现有的远程“来源”添加一个附加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

我也写了博客

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.