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:
$ 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;
master
correspond au nouveau projet du vieux repo, avec 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…
them/repo
sur you/repo
. git clone [email protected]:you/repo.git
gitk
. old-master
afin de ne pas perdre la trace des anciens commits.] 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…
git clone [email protected]:you/orig.git
git clone orig copy
copy
local, réinitialisez la twig principale à l’endroit 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 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?
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