Como usar Bitbucket e GitHub ao mesmo tempo para um projeto?


94

Eu tenho um repositório que desejo enviar para o Bitbucket e o GitHub. É vital que meu repositório seja hospedado por ambos.

Existe uma maneira de fazer isso no Git?


4
Isso parece muito útil. Especialmente quando um repositório está inativo. No momento, o bitbucket está fora do ar e basicamente não consigo fazer meu trabalho.
imranal

Respostas:


117

Você pode usar vários repositórios remotos com git. Mas você terá que empurrar separadamente em 2 de seus controles remotos, eu acredito.

Por exemplo, se seu projeto atualmente aponta para o github, você pode renomear seu repositório remoto atual para github:

$ git remote rename origin github

Você pode então adicionar outro repositório remoto, diga bitbucket:

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git

Agora, para enviar alterações para o branch correspondente no github ou bitbucket, você pode fazer isso:

$ git push github HEAD
$ git push bitbucket HEAD

A mesma regra se aplica ao pull: você precisa especificar de qual controle remoto deseja extrair:

$ git pull github your_branch
$ git pull bitbucket your_branch

9
Observação para futuras pessoas que visitam, seu .ssh/configarquivo é a chave para realizar essa configuração. Adicione um Host github.come um Host bitbucket.orgpara identificar qual IdentityFileusar. Então você não obterá erros de permissão negada ao tentar alternar entre o bitbucket e o github. Espero que isso ajude alguém.
Final de


28

Algumas soluções fáceis .

Vários controles remotos empurrados (e buscados) de forma independente

Este é o mais fácil de entender, mas o maior esforço para mantê-lo.

Começamos adicionando nosso novo controle remoto:

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master

Direto, não? Exceto, é claro, sempre que confirmamos qualquer alteração, precisamos enviar tanto para nossa "origem" original quanto para nosso novo "bitbucket" remoto:

$ git push origin master
$ git push bitbucket master

Não é uma sobrecarga enorme, mas tenho certeza de que vai se irritar com o tempo. Ou você pode criar um `alias gpob =" git push origin master && git push bitbucket master ".

Remoto único com vários URLs enviados (e buscados) consecutivamente

Com este método, iremos adicionar um URL adicional à nossa “origem” remota existente:

$ 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

Muito menos esforço!

Claro que o forro de prata tem uma nuvem e, neste caso, é que, embora possamos enviar para vários URLs simultaneamente, só podemos buscar na “origem” original (você pode mudar isso, mas isso está fora do escopo deste post )

Finalmente, para ver de qual controle remoto será obtido:

$ git remote -v show

Eu bloguei sobre isso também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.