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?

erogol
fonte
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 [email protected]: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
Denis Kniazhev
fonte
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
31

Sim, você pode fazer isso. Você não precisa fazer push duas vezes, mas apenas uma vez para enviar para ambos os repositórios remotos. Eu tive o mesmo problema antes, então escrevi como fazê-lo aqui. Git: enviar para / puxar do Github e do Bitbucket

Kevin lee
fonte
2
Bom post! Seria bom incluir um verão aqui se você pudesse.
OneHoopyFrood
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://[email protected]/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://[email protected]/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.

Ahmad Awais
fonte