J'ai master et new-project branches. Et maintenant, j'aimerais créer un nouveau dépôt avec son maître basé sur la branche de nouveau projet.
Contexte: j'ai un référentiel qui contient trois applications indépendantes. Cela n'a pas commencé comme ça. Il n'y avait à l'origine qu'une seule application dans le repo. Au fil du temps, toutefois, les besoins des entreprises ont évolué. Une application est devenue deux (une version héritée et une réécriture). Un service Web a été ajouté. Des branches distinctes ont été utilisées pour contenir les trois projets. Cependant, ils ne partagent aucun code. Et il serait donc plus simple de les répartir dans leurs propres pensions.
J'ai commencé avec l'idée de @ user292677 et je l'ai affinée pour résoudre mon problème:
$ git Push https://github.com/accountname/new-repo.git +new-project:master
Le nouveau dépôt Github est terminé. Le résultat est;
master
correspond au new-project de l'ancien référentiel, avecEn fait, j'ai découvert qu'en utilisant cette méthode, je pouvais créer le nouveau référentiel avec une sélection de branches sélectionnée à la main, 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 également déplacée vers le nouveau référentiel et apparaîtra sous la forme Rails3. Cela fonctionne vraiment bien: le diagramme de réseau montre les nouveaux master et Rails3 avec un historique complet et leurs relations correctes.
Mise à jour 2013-12-07: utilisé avec un autre projet et vérifié que cette recette fonctionne toujours.
Mise à jour 2018-01-11: Étape 3 mise à jour pour utiliser la recommandation GitHub pour le protocole https. La recette fonctionne toujours.
Mettre à jour:
cd au repo local contenant old_branch et:
$ git Push https://github.com/accountname/new_repo.git +old_branch:master
git clone -b new-project /path/to/repo /new/repo/path
Éditer: Dans GitHub, vous pouvez “fourcher” le référentiel, 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é-édition: je viens de me rendre compte que c’est la branche master
que vous voulez définir, pas seulement la branche «par défaut». Alors…
them/repo
en you/repo
. git clone [email protected]:you/repo.git
gitk
. old-master
pour ne pas perdre la trace des anciens commits.] new-project
, cliquez avec le bouton droit de la souris sur le message de validation et sélectionnez «Réinitialiser la branche principale ici». (Vous pouvez également le faire sur la ligne de commande en utilisant git-reset
, mais je n’ai pas trouvé le bon appel.)Votre prochain envoi vers votre dépôt GitHub devra être effectué avec l’option --force
, mais sinon vous avez terminé.
Si c’est l’un de vos propres dépôts, vous le faites pour…
git clone [email protected]:you/orig.git
git clone orig copy
copy
local, réinitialisez la branche master
à l'emplacement souhaité. you/copy
. Suivez les instructions sur GitHub pour configurer ce projet en tant que télécommande pour votre version locale de copy
, Push master
, et vous avez terminé!Rappelez-vous que lorsque vous créez simplement un nouveau référentiel, vous perdez la référence à l'ancien et vous compliquez la gestion des mises à jour du projet d'origine synchronisé sur le nouveau. Peut-être n'est-il pas préférable de fourrer le repo?
Et c'est tout. (Note: l'historique des git préservé)
J'avais essayé la réponse ci-dessus et ne la trouvais pas assez précise 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 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
Pas sûr que ce soit un bon moyen, mais c'est quand même facile:
git clone -b new-project [email protected]:User/YourProject.git newProjcet
Créez ensuite un nouveau dépôt sur github et appuyez dessus.
Petit ajout à la bonne réponse:
$ git Push [email protected]: nom du compte/new_repo + old_branch: maître
"[email protected]: accountname/new_repo" => obtenir de github "Cloner ou télécharger" menu déroulant