106 votes

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

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

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

140voto

Denis Kniazhev Points 1998

Vous pouvez utiliser plusieurs dépôts distants avec git. Mais vous devrez pousser séparément dans deux de vos dépôts distants, je crois.

Par exemple, si votre projet pointe actuellement vers github, vous pouvez renommer votre dépôt 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 git@bitbucket.org:your_user/your_repo.git

Maintenant pour pousser les changements vers la branche correspondante sur github ou bitbucket vous pouvez faire ceci :

$ 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 des données :

$ git pull github your_branch
$ git pull bitbucket your_branch

35voto

Kevin Lee Points 602

Oui, vous pouvez le faire. Vous n'avez pas besoin de pousser deux fois mais juste une fois pour pousser vers les deux dépôts distants. J'ai eu le même problème auparavant et j'ai écrit comment le faire ici. Git : Pousser vers / tirer de Github et Bitbucket

34voto

Ahmad Awais Points 9142

Quelques-uns EASY solutions.

Plusieurs télécommandes poussées (et récupérées) de manière indépendante

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

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

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

C'est simple, non ? Sauf, bien sûr, qu'à chaque fois que nous livrons des changements, nous devons pousser à la fois vers notre "origin" original et vers notre nouveau "bitbucket" distant :

$ git push origin master
$ git push bitbucket master

Ce n'est pas un gros problème, mais je suis sûr que ça va s'aggraver avec le temps. Ou vous pouvez créer un `alias gpob="git push origin master && git push bitbucket master".

Une seule télécommande avec plusieurs URLs poussées (et extraites) consécutivement.

Avec cette méthode, nous allons ajouter une URL supplémentaire à notre télécommande existante "origine" :

$ 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

Beaucoup moins d'efforts !

Bien sûr, il y a un revers à la médaille, et dans ce cas, c'est que, bien que nous puissions pousser vers plusieurs URL simultanément, nous ne pouvons récupérer que l'"origine" d'origine (vous pouvez changer cela, mais cela n'entre pas dans le cadre de cet article).

Enfin, pour voir à partir de quelle télécommande les données seront récupérées :

$ git remote -v show

I en a parlé sur son blog également.

0voto

Pinaki Points 317

J'ai le même genre de situation avec une petite différence. Par exemple, j'ai une ou plusieurs branches BitBucket existantes dans lesquelles j'ai géré ou mis à jour mon code au cours des derniers mois.

Maintenant, mon exigence est de télécharger mon projet dans GitHub avec la seule branche 'master'.

Étape 1 -

Voici l'information sur le repo de mon projet BitBucket existant.

$ git remote -v show 

origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)

Étape 2 -

ajouter l'url d'un dépôt github à distance

$ git remote set-url origin --add https://github.com/<USERNAME>/<PROJECT_NAME>.git

Maintenant, il y a aussi des informations sur github ( $ git remote -v show ).

origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (fetch)
origin  https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git (push)
origin  https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)

Étape 3 -

Renommer le dépôt pour une meilleure compréhension -

$ git remote add bitbucket https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME>.git
$ git remote add github https://github.com/<USERNAME>/<PROJECT_NAME>.git

Maintenant, les informations mises à jour ( $ git remote -v show ).

bitbucket   https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
bitbucket   https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
github      https://github.com/<USERNAME>/<PROJECT_NAME>.git (fetch)
github      https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)
origin      https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (fetch)
origin      https://<USERNAME>@bitbucket.org/<USERNAME>/<PROJECT_NAME> (push)
origin      https://github.com/<USERNAME>/<PROJECT_NAME>.git (push)

Étape 4 -

Il est temps de commiter/pousser l'ensemble du projet dans GitHub.

$ git add --all && git commit -m "first commit"

$ git push -u origin master

En conséquence, j'ai obtenu cette erreur -

Everything up-to-date
Branch 'master' set up to track remote branch 'master' from 'origin'.
remote: Repository not found.
fatal: repository 'https://github.com/<USERNAME>/<PROJECT_NAME>.git/' not found

Étape 5 (configuration de la clé SSH) -

Après quelques heures de recherche, j'ai découvert que c'est un problème de clé SSH.

Je génère donc une clé SSH pour BitBucket et GitHub et j'ajoute ces clés dans mes deux comptes respectifs.

Étape 6 (définir l'url du repo SSH) -

Changement https:// urls à ssh pour BitBucket et GitHub.

$ git remote set-url bitbucket git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git
$ git remote set-url github git@github.com:<USERNAME>/<PROJECT_NAME>.git

Remove origin pour changer l'url du repo d'origine.

$ git remote rm origin 

Ajoutez la première origine (BitBucket) -

$ git remote add origin git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git

Ajouter une deuxième origine (GitHub) -

$ git remote set-url origin --add git@github.com:<USERNAME>/<PROJECT_NAME>.git

Toutes les url de repo ont été changées en ssh .

$ git remote -v show

bitbucket    git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
bitbucket    git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
github       git@github.com:<USERNAME>/<PROJECT_NAME>.git (fetch)
github       git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)
origin       git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (fetch)
origin       git@bitbucket.org:<USERNAME>/<PROJECT_NAME>.git (push)
origin       git@github.com:<USERNAME>/<PROJECT_NAME>.git (push)

Étape 7 -

J'ai déjà ajouté et validé le code, il ne me reste plus qu'à pousser.

$ git push -u origin master

Êtes-vous sûr de vouloir continuer à vous connecter (oui/non/[empreinte digitale]) ? oui

Enfin, l'ensemble du projet est poussé sur GitHub dans la branche master.


Pousser le code vers les deux branches -

$ git push

Pousser le code uniquement vers GitHub ou BitBucket -

$ git push github master ou $ git push bitbucket master

Changer de branche -

$ git checkout <BRANCH_NAME>

Infos sur les économies d'énergie -

  1. utiliser Bitbucket et GitHub en même temps pour un même projet
  2. supprimer l'origine lointaine

Note importante

Etapes 5 et 6 sont utiles Si vous utilisez http:// puis changez-le en ssh pour maintenir le repo d'une meilleure façon.

OU il sera préférable d'utiliser Etapes 5 et 6 si quelqu'un a trouvé https:// repo url après l'étape 1 / $ git remote -v show

Ignorez les étapes 5 et 6 si vous les avez déjà. ssh repo.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X