332 votes

Que faire avec un commit commis dans une tête détachée

En utilisant git j'ai fait quelque chose comme ça

 git clone
git checkout {a rev number tree rev before} (here i started to be in a detached head state)
//hacking
git commit
//hacking
git commit
(some commit where made on origin/master)
git pull (wich does complete because there was some error due to the fact that i'm no more on master)
 

Parce que git m'a dit que je pouvais m'engager quand je me trouvais dans un état isolé, je l'ai fait. Mais maintenant, je souhaite fusionner ma branche de tête détachée et ma branche de maître locale, puis pousser mon lot de modifications vers origine / maître.

Ma question est donc de savoir comment puis-je fusionner la branche principale avec mon état actuel (tête détachée)

571voto

Ryan Stewart Points 46960

Créez une branche où vous êtes, puis passez à master et fusionnez-la:

 git branch my-temporary-work
git checkout master
git merge my-temporary-work
 

124voto

Charles Bailey Points 244082

Vous pouvez faire quelque chose comme ça.

 # Create temporary branch for your detached head
git branch tmp

# Go to master
git checkout master

# Merge in commits from previously detached head
git merge tmp

# Delete temproary branch
git branch -d tmp
 

Encore plus simple serait

 git checkout master
git merge HEAD@{1}
 

mais cela comporte le léger risque que, si vous commettez une erreur, il peut être un peu plus difficile de récupérer les erreurs commises sur la tête détachée.

20voto

arnaud576875 Points 35281

Vous pouvez simplement faire git merge <commit-number> ou git cherry-pick <commit> <commit> ...

Comme suggéré par Ryan Stewart, vous pouvez également créer une branche à partir du HEAD actuel:

 git branch brand-name
 

Ou juste un tag:

 git tag tag-name
 

1voto

BenZen Points 796

J'ai également fondé un article où il est expliqué comment traiter. Je l’ajoute car il diffère un peu de ce qui était proposé. Mais je pense que toutes les propositions sont valables

http://edspencer.net/2009/10/git-what-to-do-if-you-commit-to-no-branch.html

Plus tard, j'accepterai la première réponse comme étant la bonne

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