1294 votes

Vous n'avez pas conclu votre fusion (MERGE_HEAD existe)

Je suis très novice en matière de git. J'ai créé une branche appelée 'f' et fait un checkout vers master. Lorsque j'ai essayé la commande git pull, j'ai obtenu un message d'erreur de type

You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.

Lorsque j'essaie le statut git, il me donne ce qui suit :

On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 13 different commit(s) each, respectively.
#
# Changes to be committed:
#
#   modified:   app/assets/images/backward.png
#   modified:   app/assets/images/forward.png
#   new file:   app/assets/images/index_background.jpg
#   new file:   app/assets/images/loading.gif
#   modified:   app/assets/images/pause.png
#   modified:   app/assets/images/play.png
#   new file:   app/assets/javascripts/jquery-ui-bootstrap.js
#   new file:   app/assets/stylesheets/jquery-ui-bootstrap.css
#   modified:   app/controllers/friends_controller.rb
#   modified:   app/controllers/plays_controller.rb
#   modified:   app/mailers/invite_friends_mailer.rb
#   modified:   app/mailers/send_plays_mailer.rb
#   modified:   app/mailers/shot_chart_mailer.rb
#   modified:   app/views/friends/show_plays.html.erb
#   modified:   app/views/layouts/application.html.erb
#   modified:   app/views/plays/_inbox_table.html.erb
#   modified:   app/views/plays/show.html.erb
#   modified:   app/views/welcome/contact_form.html.erb
#   modified:   app/views/welcome/index.html.erb
#   modified:   log/development.log
#   modified:   log/restclient.log
#   new file:   tmp/cache/assets/C1A/C00/sprockets%2Fb7901e0813446f810e560158a1a97066
#   modified:   tmp/cache/assets/C64/930/sprockets%2F65aa1510292214f4fd1342280d521e4c
#   new file:   tmp/cache/assets/C73/C40/sprockets%2F96912377b93498914dd04bc69fa98585
#   new file:   tmp/cache/assets/CA9/090/sprockets%2Fa71992733a432421e67e03ff1bd441d8
#   new file:   tmp/cache/assets/CCD/7E0/sprockets%2F47125c2ebd0e8b29b6511b7b961152a1
#   modified:   tmp/cache/assets/CD5/DD0/sprockets%2F59d317902de6e0f68689899259caff26
#   modified:   tmp/cache/assets/CE3/080/sprockets%2F5c3b516e854760f14eda2395c4ff2581
#   new file:   tmp/cache/assets/CED/B20/sprockets%2F423772fde44ab6f6f861639ee71444c4
#   new file:   tmp/cache/assets/D0C/E10/sprockets%2F8d1f4b30c6be13017565fe1b697156ce
#   new file:   tmp/cache/assets/D12/290/sprockets%2F93ae21f3cdd5e24444ae4651913fd875
#   new file:   tmp/cache/assets/D13/FC0/sprockets%2F57aad34b9d3c9e225205237dac9b1999
#   new file:   tmp/cache/assets/D1D/DE0/sprockets%2F5840ff4283f6545f472be8e10ce67bb8
#   new file:   tmp/cache/assets/D23/BD0/sprockets%2F439d5dedcc8c54560881edb9f0456819
#   new file:   tmp/cache/assets/D24/570/sprockets%2Fb449db428fc674796e18b7a419924afe
#   new file:   tmp/cache/assets/D28/480/sprockets%2F9aeec798a04544e478806ffe57e66a51
#   new file:   tmp/cache/assets/D3A/ED0/sprockets%2Fcd959cbf710b366c145747eb3c062bb4
#   new file:   tmp/cache/assets/D3C/060/sprockets%2F363ac7c9208d3bb5d7047f11c159d7ce
#   new file:   tmp/cache/assets/D48/D00/sprockets%2Fe23c97b8996e7b5567a3080c285aaccb
#   new file:   tmp/cache/assets/D6A/900/sprockets%2Fa5cece9476b21aa4d5f46911ca96c450
#   new file:   tmp/cache/assets/D6C/510/sprockets%2Fb086a020de3c258cb1c67dfc9c67d546
#   new file:   tmp/cache/assets/D70/F30/sprockets%2Facf9a6348722adf1ee7abbb695603078
#   new file:   tmp/cache/assets/DA3/4A0/sprockets%2F69c26d0a9ca8ce383e20897cefe05aa4
#   new file:   tmp/cache/assets/DA7/2F0/sprockets%2F61da396fb86c5ecd844a2d83ac759b4b
#   new file:   tmp/cache/assets/DB9/C80/sprockets%2F876fbfb9685b2b8ea476fa3c67ae498b
#   new file:   tmp/cache/assets/DBD/7A0/sprockets%2F3640ea84a1dfaf6f91a01d1d6fbe223d
#   new file:   tmp/cache/assets/DC1/8D0/sprockets%2Fe5ee1f1cfba2144ec00b1dcd6773e691
#   new file:   tmp/cache/assets/DCC/E60/sprockets%2Fd6a95f601456c93ff9a1bb70dea3dfc0
#   new file:   tmp/cache/assets/DF1/130/sprockets%2Fcda4825bb42c91e2d1f1ea7b2b958bda
#   new file:   tmp/cache/assets/E23/DE0/sprockets%2Fb1acc25c28cd1fabafbec99d169163d3
#   new file:   tmp/cache/assets/E23/FD0/sprockets%2Fea3dbcd1f341008ef8be67b1ccc5a9c5
#   modified:   tmp/cache/assets/E4E/AD0/sprockets%2Fb930f45cfe7c6a8d0efcada3013cc4bc
#   new file:   tmp/cache/assets/E63/7D0/sprockets%2F77de495a665c3ebcb47befecd07baae6
#   modified:   tmp/pids/server.pid
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   Coachbase/
#   log/development.log.orig
#   log/restclient.log.orig

Que dois-je faire ? Veuillez m'aider.

Merci.

2356voto

Karthik Bose Points 3118

OK. Le problème est que votre pull précédent n'a pas réussi à fusionner automatiquement et est passé en état de conflit. Et le conflit n'a pas été résolu correctement avant le tirage suivant.

1) Annulez la fusion et tirez à nouveau.

Pour annuler une fusion :

git merge --abort [Depuis la version git 1.7.4]

git reset --merge [versions git antérieures]

2) Résoudre le conflit.

3) N'oubliez pas d'ajouter et de valider la fusion.

4) git pull devrait maintenant fonctionner correctement.

2 votes

J'ai essayé et j'ai obtenu des conflits dans les fichiers (lorsque je tire) Autofusion de app/views/layouts/application.html.erb Autofusion de log/development.log CONFLICT (contenu) : Conflit de fusion dans log/development.log Fusion automatique de log/restclient.log CONFLICT (contenu) : Conflit de fusion dans log/restclient.log La fusion automatique a échoué ; corrigez les conflits puis livrez le résultat. J'ai corrigé les fichiers locaux spécifiés, puis j'ai essayé 'git pull'. Pull n'est pas possible car vous avez des fichiers non fusionnés. Veuillez les corriger dans l'arbre de travail, puis utilisez 'git add/rm <file>' comme il convient pour marquer la résolution, ou utilisez 'git commit -a'.

1 votes

@AnkitSuri, Après avoir résolu les conflits, les avez-vous mis en scène et commis ?

0 votes

@AnkitSuri, Heureux de vous aider :-) Si la réponse est utile, vous pouvez l'upvoter et l'accepter ;-)

120voto

knagode Points 1176

Si vous êtes sûr d'avoir déjà résolu tous les conflits de fusion :

rm -rf .git/MERGE*

Et l'erreur disparaîtra.

2 votes

Si vous supprimez MERGE_HEAD, le commit résultant n'aura-t-il pas un seul parent et vous n'aurez pas l'historique de la branche fusionnée ?

2 votes

C'est ce que je voulais

1 votes

@JasonGoemaat dans mon cas, je fusionne temporairement plusieurs PRs qui n'ont pas encore été acceptés. Je ne prévois pas de commettre ces fusions sur la branche des fonctionnalités, j'en ai juste besoin pendant le développement.

82voto

fantabolous Points 431

Je pense qu'il est utile de mentionner qu'il y a de nombreux scénarios dans lesquels le message You have not concluded your merge (MERGE_HEAD exists) pourrait se produire, car de nombreuses personnes sont probablement arrivées sur cette page après avoir recherché ledit message. La résolution dépendra de la façon dont vous êtes arrivé là.

git status est toujours un point de départ utile.

Si vous avez déjà fusionné le contenu à votre satisfaction et que vous obtenez toujours ce message, il peut être aussi simple que de faire

git add file
git commit

Mais encore une fois, cela dépend vraiment de la situation. C'est une bonne idée de comprendre les bases avant de tenter quoi que ce soit (même lien que Terence) : Git - Conflits de fusion de base

2 votes

Merci de poser cette question, pour ceux d'entre nous qui ont le type de problème le plus simple. "Git status" était ce dont un débutant comme moi avait besoin, pour se rappeler que la dernière étape de la correction d'une fusion conflictuelle était la simple commande "git commit".

48voto

Badr Bellaj Points 2036

Je pense que c'est la bonne méthode :

git merge --abort

git fetch --all

Alors, vous avez deux options :

git reset --hard origin/master

OU Si vous êtes sur une autre branche :

git reset --hard origin/<branch_name>

3 votes

Seul git merge --abort a fonctionné lui-même && git pull then

0 votes

Réponse parfaite. Merci, celle-ci m'a fait gagner du temps.

1 votes

Seule cette réponse a fonctionné pour moi. Merci.

13voto

Franklin Points 139

Essayez

git reset --hard origin/trunk

Le "tronc" est la branche à laquelle j'essaie d'accéder.

Je ne sais pas comment ni pourquoi cela fonctionne. Cela avait quelque chose à voir avec un commit que j'ai fait et qui forçait mes pull requests à faire une fusion.

0 votes

Cela a fonctionné en combinaison avec les réponses ci-dessus pour moi

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