Comment utiliser Bitbucket et GitHub en même temps pour un projet?

94

J'ai un référentiel que je veux pousser dans Bitbucket et GitHub. Il est vital que mon référentiel soit hébergé par les deux.

Existe-t-il un moyen de faire cela dans Git?

érogol
la source
4
Cela semble très utile. Surtout lorsqu'un référentiel est en panne. Pour le moment, bitbucket est en panne et je ne suis pas en mesure de faire mon travail.
imranal

Réponses:

117

Vous pouvez utiliser plusieurs référentiels distants avec git. Mais vous devrez pousser séparément dans 2 de vos télécommandes, je crois.

Par exemple, si votre projet pointe actuellement vers github, vous pouvez renommer votre référentiel distant actuel en github:

$ git remote rename origin github

Vous pouvez ensuite ajouter un autre référentiel distant, par exemple bitbucket:

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

Maintenant, pour pousser les modifications vers la branche correspondante sur github ou bitbucket, vous pouvez le faire:

$ git push github HEAD
$ git push bitbucket HEAD

La même règle s'applique à l'extraction: vous devez spécifier la télécommande à partir de laquelle vous souhaitez extraire:

$ git pull github your_branch
$ git pull bitbucket your_branch
Denis Kniazhev
la source
9
Note aux futurs visiteurs, votre .ssh/configfichier est la clé pour réaliser cette configuration. Ajoutez un Host github.comet un Host bitbucket.orgpour identifier lequel IdentityFileutiliser. Ensuite, vous n'obtiendrez pas les erreurs d'autorisation refusées en essayant de permuter entre bitbucket et github. J'espère que cela aide quelqu'un.
Ultimater
31

Oui, tu peux faire ça. Vous n'avez pas besoin de pousser deux fois mais juste une fois pour pousser vers les deux référentiels distants. J'ai eu le même problème avant alors j'ai écrit comment le faire ici. Git: Push to / Pull depuis Github et Bitbucket

Kevin Lee
la source
2
Bon message! Ce serait bien d'inclure ici un résumé si vous le pouviez.
OneHoopyFrood
28

Quelques solutions FACILES .

Plusieurs télécommandes poussées (et récupérées) indépendamment

C'est le plus facile à comprendre, mais le plus d'effort à maintenir.

Nous commençons par ajouter notre nouvelle télécommande:

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

Simple non? Sauf bien sûr à chaque fois que nous commettons des modifications, nous devons pousser à la fois notre «origine» d'origine et notre nouveau «bitbucket» distant:

$ git push origin master
$ git push bitbucket master

Ce n'est pas une surcharge énorme, mais je suis sûr que cela va griller avec le temps. Ou vous pouvez créer un `alias gpob =" git push origin master && git push bitbucket master ".

Télécommande unique avec plusieurs URL poussées (et récupérées) consécutivement

Avec cette méthode, nous allons ajouter une URL supplémentaire à notre «origine» distante existante:

$ 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

Beaucoup moins d'effort!

Bien sûr, il y a un nuage, et dans ce cas, c'est que même si nous pouvons pousser vers plusieurs URL simultanément, nous ne pouvons extraire que de l '«origine» d'origine (vous pouvez changer cela, mais cela est hors de portée pour cet article ).

Enfin, pour voir quelle télécommande sera récupérée:

$ git remote -v show

J'ai aussi blogué à ce sujet .

Ahmad Awais
la source