181 votes

Forking de GitHub à Bitbucket

Je travaille sur un projet basé sur CakePHP qui est hébergé sur GitHub . Mon projet est hébergé sur Bitbucket . Tous deux utilisent git . En fait, j'aimerais créer un "fork" (je ne sais pas si j'utilise les bons termes, puisque je suis nouveau dans le domaine de l'informatique). git ) de CakePHP dans mon dépôt Bitbucket, afin de pouvoir obtenir les mises à jour sans avoir besoin de télécharger tous les zip/tar de CakePHP et de remplacer le dossier, puis de commiter et de pousser, mais peut-être avec une 'fusion'( ?).

5 votes

Ver stackoverflow.com/questions/1811730/ pour une bonne approche de ce type de flux de travail.

152voto

Martin Geisler Points 44779

Il n'est pas possible aujourd'hui d'envoyer une "pull request" sur différents sites. J'ai ajouté une demande de fonctionnalité pour cela dans le Bitbucket Issue Tracker : #3288 . Je vous suggère de vous ajouter en tant que suiveur si vous voulez suivre ce dossier.

Cependant, vous pouvez toujours déplacer la source de GitHub vers Bitbucket sans avoir à télécharger de fichiers zip ou tarballs. Vous faites un clone de GitHub et vous le poussez vers Bitbucket :

$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push git@bitbucket.org:mg/cakephp.git master

J'ai créé mg/cakephp comme un dépôt Git vide dans Bitbucket d'abord. De cette façon, vous pouvez pousser/tirer les modifications de GitHub vers Bitbucket.

3 votes

Alors comment pouvons-nous tirer de l'amont ?

1 votes

@RuchirShukla : de la même manière, fondamentalement. Vous devez déplacer les commits à travers votre propre machine en tirant de votre amont. Vous poussez ensuite cela vers l'autre site d'hébergement, synchronisant ainsi les deux.

4 votes

Ça a bien marché pour moi, sauf que j'ai dû cd cakephp entre les deux commandes. C'est évident pour les non-initiés, mais les débutants pourraient se demander pourquoi cela ne fonctionne pas.

98voto

aleemb Points 12138

Le flux de travail ci-dessous ajoute le dépôt github en tant que nouveau dépôt distant appelé sync et la télécommande bitbucket comme origin . Il ajoute également une branche appelée github pour suivre le dépôt github et une branche appelée master pour suivre le dépôt bitbucket. Il suppose que vous avez un dépôt bitbucket appelé "myrepository" qui est vide.

Configurer les télécommandes

# setup local repo
mkdir myrepository
cd myrepository
git init

# add  bitbucket remote as "origin"
git remote add origin ssh://git@bitbucket.org/aleemb/myrepository.git

# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git

# verify remotes
git remote -v
# should show fetch/push for "origin" and "sync" remotes

Branches d'installation

# first pull from github using the "sync" remote
git pull sync

# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master

# switch to the new branch
git checkout github

# create new master branched out of github branch
git checkout -b master

# push local "master" branch to "origin" remote (bitbucket)
git push -u origin master

Maintenant vous devriez avoir le local github qui suit la branche du repo github. master branche. Et vous devriez avoir le local master suivi de la branche du repo bitbucket ( master par défaut).

Cela permet d'effectuer facilement une traction sur le fichier github puis fusionner ces changements sur la branche master (la rebase est préférable à la fusion), puis vous pouvez pousser la branche master branche (qui sera poussée sur bitbucket).

0 votes

Cela ne semble pas fonctionner mais c'est une bonne idée. Comment le corriger pour qu'il fonctionne ?

0 votes

La branche locale de github suit la branche master de github distante, puis vous poussez vers le master bitbucket distant ? Quand le push vers github se produit-il ? @aleemb

0 votes

@aleemb, donc, si j'ajoute un dépôt sur github comme "sync", il sera "synchronisé" comme push to origin == push to sync ? ou je dois pousser manuellement vers le dépôt synchronisé ?

39voto

Zubin Points 3130

Si vous voulez garder votre repo à jour, utilisez deux remotes : Github ( upstream ) et Bitbucket ( origin ) comme ceci :

# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `origin` to `upstream`
git remote rename origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git push --mirror origin

Pour récupérer les mises à jour de CakePHP depuis Github :

git pull upstream master

Pour pousser vos modifications de code vers Bitbucket :

git push origin master

0 votes

Je pense que vous vouliez dire "clone git". mybitibucket/cakephp/cakephp ` dans le premier git commande, n'est-ce pas ? C'est le chemin à suivre....

0 votes

C'est tout simplement génial ! Merci beaucoup ! J'apprécie beaucoup

0 votes

Cela ne fonctionne pas non plus. Les branches et les balises ne sont pas incluses dans Bitbucket.

13voto

shmuli Points 423

Lors de la création d'un nouveau référentiel dans BitBucket, cliquez sur le bouton Import repository en haut à droite. Entrez l'url https trouvée en cliquant sur Clone or download dans Github pour le dépôt que vous voulez bifurquer.

Donnez un nom à votre dépôt, configurez vos paramètres de confidentialité, et voilà !

3 votes

C'est du clonage, pas de la bifurcation, ce qui est différent.

7 votes

La fonctionnalité est intitulée "Importer un dépôt" sur Bitbucket, à partir de maintenant.

1 votes

@entropid un fork est un clone du repo original. Dans le monde git, Forking == clonage

-1voto

gcb Points 2264

Je suppose que vous souhaitez simplement télécharger facilement le dépôt avec votre projet... et que vous ne contribuerez PAS au cakePHP, n'est-ce pas ?

Si c'est le cas, il suffit d'ajouter une référence externe à votre dépôt.

SVN:externals équivalent dans GIT ?

Et plus tard, même si vous souhaitez contribuer à cakePHP, vous pouvez très bien le faire sur le dépôt d'origine.

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