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

ero*_*gol 86 git github bitbucket

我有一个存储库,我想推入Bitbucket和GitHub.我的存储库由两者托管至关重要.

有没有办法在Git中这样做?

Den*_*hev 110

您可以使用git使用多个远程存储库.但是你必须分别推入我相信的2个遥控器.

例如,如果您的项目当前指向github,则可以将当前的远程存储库重命名为github:

$ git remote rename origin github
Run Code Online (Sandbox Code Playgroud)

然后,您可以添加另一个远程存储库,例如bitbucket:

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git
Run Code Online (Sandbox Code Playgroud)

现在,为了将更改推送到github或bitbucket上的相应分支,您可以执行以下操作:

$ git push github HEAD
$ git push bitbucket HEAD
Run Code Online (Sandbox Code Playgroud)

同样的规则适用于提取:您需要指定要从哪个远程提取:

$ git pull github your_branch
$ git pull bitbucket your_branch
Run Code Online (Sandbox Code Playgroud)

  • 注意未来的访问者,你的`.ssh/config`文件是实现这种设置的关键.添加一个`Host github.com`和一个`Host bitbucket.org`以识别要使用的`IdentityFile`.然后你不会得到权限被拒绝错误尝试在bitbucket和github之间来回切换.希望这有助于某人. (6认同)

小智 29

是的,你可以这样做.您不必两次推送,只需推送一次即可推送到两个远程存储库.我之前有同样的问题,所以在这里写了如何做到这一点. Git:从Github和Bitbucket推送/拉取

  • 好帖子!如果可以的话,最好在这里放一些夏天。 (2认同)

Ahm*_*ais 28

一些简单的解决方案.

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

这是最容易理解的,但最需要维护.

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

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master
Run Code Online (Sandbox Code Playgroud)

直接没有?除了当然每次我们进行任何更改,我们都需要推送我们原来的"origin"和我们新的远程"bitbucket":

$ git push origin master
$ git push bitbucket master
Run Code Online (Sandbox Code Playgroud)

不是一个巨大的开销,但我相信它会随着时间推移而产生.或者你可以创建一个`alias gpob ="git push origin master && git push bitbucket master".

连续推送(和获取)多个URL的单个远程

使用此方法,我们将向现有的远程"origin"添加一个额外的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
Run Code Online (Sandbox Code Playgroud)

努力少了!

当然,银色衬里有一个云,在这种情况下,虽然我们可以同时推送到多个URL,但我们只能从原始的"原点"获取(你可以改变它,但这不在这个帖子的范围内) ).

最后,要查看将从哪个远程获取:

$ git remote -v show
Run Code Online (Sandbox Code Playgroud)

我也在博客上写了这篇文章.