104 votes

Comment créer un commit sans parent dans Git?

Double Possible:
Dans git, est-il une façon simple d'introduire une autre branche à un référentiel?

J'ai un petit projet, j'étais en train de travailler sans aucune sorte de logiciel de contrôle de version, et j'ai fini avec trois versions différentes de la même script, où chacun fait quelque chose d'un peu différent des autres. J'ai initialisé un repo git avec un des versions, et je tiens vraiment à les commettre chacun des deux autres sans les parents. De cette façon, je peux fusionner les différences comme si chacune des trois versions du script ont été les bouts de branches différentes.

Je ne suis même pas sûr que ce soit nécessairement un sain d'esprit ou de façon raisonnable d'aller sur la résolution de ce problème... Tous les conseils sur la façon de faire les choses de cette façon, ou des conseils sur une meilleure façon de gérer cette situation serait très apprécié.

175voto

manojlds Points 96599

À partir de mon commentaire:

Pourquoi ne pas créer deux branches et ajouter les deux autres versions pour eux et ensuite travailler sur les branches?

Qui, je pense, serait d'accord avec ctcherry de réponse.


Mais si vraiment vous ne voulez créer un complètement différent "de branche", qui n'est pas liée à la maîtrise, alors vous pouvez le faire avec l' git checkout --orphan. Le manuel pour l' git checkout décrit à l'oeuvre de l'option --orphan:

Créer un nouveau orphelin branche, nommé <new_branch>, a commencé à partir de <start_point> et passer. Le premier commit faite sur cette nouvelle direction aura pas de parents et il sera la racine d'une nouvelle histoire totalement déconnecté de toutes les autres branches et s'engage.

Vous pouvez l'utiliser comme ceci:

git checkout --orphan version2
git rm -rf .
<add version2 script>
git add your files
git commit -m 'Initial commit for version 2'

Si votre Git est plus vieux que 1.7.2 (lorsqu' git checkout --orphan a été introduit), alors vous pouvez utiliser l'autre de la séquence des commandes de "la Création de Nouveaux Vides Branches" dans le Git Community Book:

Ocasionally, vous voudrez peut-être conserver les branches dans votre référentiel qui ne partagent pas un ancêtre avec votre code. Quelques exemples de ce qui pourrait être généré de la documentation ou quelque chose le long de ces lignes. Si vous souhaitez créer une nouvelle branche de la tête qui n'utilise pas de votre base de code en tant que parent, vous pouvez créer un vide branche comme ceci:

git symbolic-ref HEAD refs/heads/newbranch 
rm .git/index 
git clean -fdx 
<do work> 
git add your files 
git commit -m 'Initial commit'

1voto

ctcherry Points 15112

Vous pouvez créer une branche pour chaque version du script et les valider dans ces branches individuelles. Puis fusionnez-les un à un dans le maître. Cela devrait avoir l'effet que vous recherchez.

1voto

Philip Oakley Points 3825

Pourquoi ne pas commencer avec un dépôt "vide" (par exemple, un seul fichier Lisez-moi de votre énoncé de problème ci-dessus). Ensuite, vous pouvez créer une branche trois fois, ajouter les différentes versions de script dans chacune des branches et les valider séparément.

Vous pouvez ensuite créer une branche / modifier / commettre / fusionner et essayer toutes vos options de manière bien gérée.

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