J'ai commencé avec l'idée de @ user292677 et je l'ai affinée pour résoudre mon problème:
- Créez le new-repo dans github.
- cd dans votre copie locale de l'ancien référentiel à partir duquel vous souhaitez extraire, qui est configuré pour suivre la branche du nouveau projet qui deviendra le maître du nouveau référentiel .
$ git push https://github.com/accountname/new-repo.git +new-project:master
Le nouveau repo Github est terminé. Le résultat est;
- un nouveau référentiel Github nommé new-repo ,
- dont
master
correspond au nouveau projet de l'ancien repo , avec
- toute l'histoire préservée.
En fait, j'ai trouvé qu'en utilisant cette méthode, je pouvais créer le nouveau repo avec une sélection de branches triée sur le volet, renommée comme je le voulais:
$ git push [email protected]:accountname/new_repo +new-project:master +site3a:rails3
Le résultat est que la branche site3a préexistante est désormais également déplacée vers le nouveau dépôt et apparaîtra sous la forme rails3 . Cela fonctionne très bien: le schéma de réseau montre le nouveau maître et les rails3 avec un historique complet et dans leur relation correcte l'un avec l'autre.
Mise à jour 07/12/2013: utilisé avec un autre projet et vérifié que cette recette fonctionne toujours.
Mise à jour du 11 janvier 2018: mise à jour de l'étape 3 pour utiliser la recommandation GitHub pour le protocole https. La recette fonctionne toujours.
--follow-tags
.push
local (c'est-git init
à- dire au lieu de Github> Nouveau> ...)Mettre à jour:
cd vers le dépôt local contenant old_branch et:
la source
Edit: Dans GitHub, vous pouvez «fork» le repo, puis aller dans l'onglet Admin de votre clone. Sous «Nom du référentiel» et «Visibilité» se trouve «Branche par défaut» avec un menu déroulant de branches. Choisissez
new-project
.Ré-éditer: je viens de réaliser que c'est la
master
branche que vous voulez définir, pas seulement la branche «par défaut». Alors…them/repo
versyou/repo
.git clone [email protected]:you/repo.git
gitk
.old-master
branche pour ne pas perdre la trace des anciens commits.]new-project
branche, faites un clic droit sur le message de commit et sélectionnez «Réinitialiser la branche principale ici». (Vous pouvez également le faire sur la ligne de commande en utilisantgit-reset
, mais je n'ai pas trouvé le bon appel.)Votre prochaine poussée vers votre dépôt GitHub devra être effectuée avec l'
--force
option, mais sinon, vous avez terminé.S'il s'agit de l'un de vos propres dépôts, vous faites cela pour…
git clone [email protected]:you/orig.git
git clone orig copy
copy
dépôt local , réinitialisez lamaster
branche là où vous le souhaitez.you/copy
. Suivez les instructions sur GitHub pour configurer ce projet en tant que télécommande pour votre version locale decopy
, pushmaster
, et vous avez terminé!la source
Et c'est tout. (Remarque: histoire de git préservée)
J'avais essayé la réponse ci-dessus et je l'ai trouvée pas assez spécifique car elle ne spécifiait pas + master: master, ce dont j'avais besoin pour que cela fonctionne. Cela fonctionne très bien.
Source (avec mes modifications pour éviter les problèmes de ssh avec github): Mauricio Aiello, ancien développeur senior Java, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a -branche-dans-un-référentiel-existant
la source
Je ne sais pas si c'est un bon moyen, mais c'est quand même facile:
Ensuite, créez un nouveau dépôt sur github et poussez-le.
la source
N'oubliez pas que lorsque vous créez simplement un nouveau dépôt, vous perdez la référence à l'ancien et il est plus difficile de maintenir une mise à jour du projet d'origine synchronisée avec le nouveau. N'est-il pas préférable de fourcher le repo?
la source
Petit ajout à la bonne réponse:
$ git push [email protected]: nom de compte / new_repo + old_branch: maître
"[email protected]: accountname / new_repo" => obtenir depuis github le menu déroulant "Cloner ou télécharger"
la source