¿Cómo usar Bitbucket y GitHub al mismo tiempo para un proyecto?

94

Tengo un repositorio que quiero insertar en Bitbucket y GitHub. Es vital que mi repositorio esté alojado por ambos.

¿Hay alguna forma de hacer esto en Git?

erogol
fuente
4
Esto parece muy útil. Especialmente cuando un repositorio está inactivo. Por el momento, bitbucket está inactivo y básicamente no puedo hacer mi trabajo.
imranal

Respuestas:

117

Puedes usar varios repositorios remotos con git. Pero creo que tendrás que presionar por separado en 2 de tus controles remotos.

Por ejemplo, si su proyecto actualmente apunta a github, puede cambiar el nombre de su repositorio remoto actual a github:

$ git remote rename origin github

Luego puede agregar otro repositorio remoto, diga bitbucket:

$ git remote add bitbucket [email protected]:your_user/your_repo.git

Ahora, para enviar cambios a la rama correspondiente en github o bitbucket, puede hacer esto:

$ git push github HEAD
$ git push bitbucket HEAD

La misma regla se aplica a la extracción: debe especificar de qué control remoto desea extraer:

$ git pull github your_branch
$ git pull bitbucket your_branch
Denis Kniazhev
fuente
9
Tenga en cuenta para las futuras personas que lo visiten, su .ssh/configarchivo es la clave para lograr esta configuración. Agregue un Host github.comy un Host bitbucket.orgpara identificar cuál IdentityFileusar. Entonces no obtendrá los errores de permiso denegado al intentar intercambiar entre bitbucket y github. Espero que esto ayude a alguien.
Ultimater
31

Si tu puedes hacerlo. No tiene que presionar dos veces, sino solo una vez para presionar a ambos repositorios remotos. Tuve el mismo problema antes, así que escribí cómo hacerlo aquí. Git: Push to / Pull desde Github y Bitbucket

Kevin Lee
fuente
2
¡Buen post! Sería bueno incluir un resumen aquí si pudiera.
OneHoopyFrood
28

Algunas soluciones FÁCILES .

Varios controles remotos presionados (y recuperados) de forma independiente

Este es el más fácil de entender, pero el mayor esfuerzo de mantener.

Comenzamos agregando nuestro nuevo control remoto:

$ cd myproject 
$ git remote add bitbucket ssh://[email protected]/user/myproject.git 
$ git push bitbucket master

Directo, ¿no? Excepto, por supuesto, cada vez que realizamos algún cambio, tenemos que impulsar tanto nuestro "origen" original como nuestro nuevo "bitbucket" remoto:

$ git push origin master
$ git push bitbucket master

No es una sobrecarga enorme, pero estoy seguro de que se agrandará con el tiempo. O puede crear un `alias gpob =" git push origin master && git push bitbucket master ".

Control remoto único con varias URL enviadas (y obtenidas) consecutivamente

Con este método, vamos a agregar una URL adicional a nuestro "origen" remoto 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

¡Mucho menos esfuerzo!

Por supuesto, el lado positivo tiene una nube, y en este caso, es que si bien podemos enviar a varias URL simultáneamente, solo podemos buscar desde el "origen" original (puede cambiar esto, pero eso está fuera del alcance de esta publicación ).

Finalmente, para ver de qué control remoto se obtendrá:

$ git remote -v show

También escribí en un blog sobre eso .

Ahmad Awais
fuente