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 ?
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 ?
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
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
Quelques-uns EASY solutions.
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".
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.
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 -
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 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.