Comment créer un nouveau référentiel GitHub à partir d’une twig dans un référentiel existant?

J’ai des twigs master et new-project . Et maintenant, je voudrais créer un nouveau repository avec son maître basé sur la twig nouveau projet.

Contexte: J’ai un référentiel contenant trois applications indépendantes. Cela n’a pas commencé comme ça. Il y avait à l’origine une seule application dans le repo. Au fil du temps, les besoins de l’entreprise ont toutefois changé. Une application est devenue deux (une version héritée et une réécriture). Un service Web a été ajouté. Des twigs distinctes ont été utilisées pour contenir les trois projets. Cependant, ils ne partagent aucun code. Il serait donc plus simple de les séparer dans leurs propres pensions.

J’ai commencé par l’idée de @ user292677 et l’ai affinée pour résoudre mon problème:

  1. Créez le nouveau repo dans github.
  2. cd à votre copie locale de l’ancien repo que vous voulez extraire, qui est configuré pour suivre la twig du nouveau projet qui deviendra le master du nouveau repo .
  3. $ git push https://github.com/accountname/new-repo.git +new-project:master

L’étape 3. utilise le protocole https recommandé. Sinon, si vous avez des clés ssh configurées, vous pouvez le faire: $ git push [email protected]:accountname/new-repo +new-project:master

Le nouveau repo Github est terminé. Le résultat est;

  • un nouveau repository Github nommé new-repo ,
  • dont le master correspond au nouveau projet du vieux repo, avec
  • toute l’histoire préservée.

En fait, j’ai découvert qu’en utilisant cette méthode, je pouvais créer le nouveau repository avec une sélection de twigs sortingée sur le volet, renommée comme je le souhaitais:

$ git push [email protected]:accountname/new_repo +new-project:master +site3a:rails3

Le résultat est que la twig site3a préexistante est désormais déplacée vers le nouveau repository et apparaîtra sous la forme de rails3 . Cela fonctionne très bien: le diagramme de réseau montre le nouveau maître et les rails 3 avec l’historique complet et dans leur relation correcte les uns avec les autres.

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 vers 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 

Edit: Dans GitHub, vous pouvez “décomposer” le repo, puis aller dans l’onglet Admin de votre clone. Sous “Nom du référentiel” et “Visibilité” se trouve “Par défaut” avec un menu déroulant des twigs. Choisissez un new-project .

Re-edit: Je viens de réaliser que c’est la twig principale que vous voulez définir, pas seulement la twig “default”. Alors…

  • Sur GitHub, clonez- them/repo sur you/repo .
  • Exécutez git clone [email protected]:you/repo.git
  • Démarrer gitk .
  • [Vous voudrez peut-être créer une twig old-master afin de ne pas perdre la trace des anciens commits.]
  • Recherchez le dernier commit sur la twig new-project , cliquez avec le bouton droit sur le message de validation et sélectionnez «Réinitialiser la twig principale ici». (Vous pouvez également le faire sur la ligne de commande en utilisant git-reset , mais je n’ai pas encore trouvé l’invocation correcte.)

Votre prochain passage à votre repository GitHub devra être fait avec l’option --force , mais sinon vous avez terminé.

Si c’est l’un de vos propres pensions, vous le faites pour…

  • Lancez git clone [email protected]:you/orig.git
  • Exécuter une git clone orig copy
  • Comme je l’ai décrit ci-dessus, mais depuis le repository de copy local, réinitialisez la twig principale à l’endroit où vous le souhaitez.
  • Créez le projet GitHub vide que 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é!

Pas sûr que ce soit un bon moyen, mais c’est facile quand même:

 git clone -b new-project [email protected]:User/YourProject.git newProjcet 

Ensuite, créez un nouveau repository sur github et poussez-le.

En vous rappelant que lorsque vous créez simplement un nouveau repository, vous perdez la référence à l’ancien et vous empêcherez toute mise à jour du projet d’origine synchronisé avec le nouveau. Peut-être n’est-il pas préférable de fourrer le repo?

  1. Créez le NEW_REPOSITORY dans github.
  2. cd OLD_REPOSITORY
  3. git push https://github.com/accountname/NEW_REPO + master: master

Et c’est tout. (Note: histoire de git préservée)

J’avais essayé la réponse ci-dessus et je l’ai trouvée pas assez précise car elle ne spécifiait pas + master: master, ce qui était nécessaire 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 Java, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a -ranch-dans-un-référentiel-existant

Petit ajout à la bonne réponse:

$ git push [email protected]: accountname / new_repo + old_branch: master

[email protected]: accountname / new_repo” => obtenir de github “Cloner ou télécharger” le menu déroulant