1354 votes

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

J'ai créé une branche appelée 'f' et j'ai effectué une commande checkout vers master. Lorsque j'ai essayé la commande git pull, j'ai reçu ce message :

Vous n'avez pas terminé votre fusion (MERGE_HEAD existe).
Veuillez, valider vos modifications avant de pouvoir fusionner.

Quand j'ai essayé la commande git status, cela m'a donné ceci :

Sur la branche master
# Votre branche et 'origin/master' ont divergé,
# et ont respectivement 1 et 13 commits différents chacun.
#
# Modifications à valider :
#
#   modifié :   app/assets/images/backward.png
#   modifié :   app/assets/images/forward.png
#   nouveau fichier :   app/assets/images/index_background.jpg
#   nouveau fichier :   app/assets/images/loading.gif
#   modifié :   app/assets/images/pause.png
#   modifié :   app/assets/images/play.png
#   nouveau fichier :   app/assets/javascripts/jquery-ui-bootstrap.js
#   nouveau fichier :   app/assets/stylesheets/jquery-ui-bootstrap.css
#   modifié :   app/controllers/friends_controller.rb
#   modifié :   app/controllers/plays_controller.rb
#   modifié :   app/mailers/invite_friends_mailer.rb
#   modifié :   app/mailers/send_plays_mailer.rb
#   modifié :   app/mailers/shot_chart_mailer.rb
#   modifié :   app/views/friends/show_plays.html.erb
#   modifié :   app/views/layouts/application.html.erb
#   modifié :   app/views/plays/_inbox_table.html.erb
#   modifié :   app/views/plays/show.html.erb
#   modifié :   app/views/welcome/contact_form.html.erb
#   modifié :   app/views/welcome/index.html.erb
#   modifié :   log/development.log
#   modifié :   log/restclient.log
#   nouveau fichier :   tmp/cache/assets/C1A/C00/sprockets%2Fb7901e0813446f810e560158a1a97066
...
...

Que devrais-je faire?

2449voto

Karthik Bose Points 3118

Le problème est que votre merge précédent a échoué à fusionner automatiquement et est passé à l'état de conflit. Et le conflit n'a pas été résolu correctement avant le prochain pull.

  1. Annulez le merge et tirez à nouveau.

    Pour annuler un merge :

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

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

  2. Résolvez le conflit.

  3. N'oubliez pas d'ajouter et de committer le merge.

  4. git pull devrait maintenant fonctionner correctement.

2 votes

J'ai essayé et cela m'a entraîné un conflit dans les fichiers (lors du pull) CONFLIT (contenu) : Conflit de fusion dans log/development.log CONFLIT (contenu) : Conflit de fusion dans log/restclient.log> La fusion automatique a échoué ; corrigez les conflits, puis validez le résultat. J'ai corrigé les fichiers locaux spécifiés, puis j'ai essayé 'git pull' Le pull n'est pas possible car vous avez des fichiers non fusionnés. Veuillez les corriger dans l'arborescence de travail, puis utilisez 'git add/rm ' selon votre résolution, ou utilisez 'git commit -a'.

1 votes

@AnkitSuri, Après avoir corrigé les conflits, les avez-vous mis en scène et commités?

0 votes

@AnkitSuri, Heureux de t'aider :-) Si la réponse est utile, tu peux voter pour elle et l'accepter. ;-)

126voto

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, ce qui signifie que 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 PR qui n'ont pas encore été acceptés. Je n'ai pas l'intention de valider ces fusions sur la branche de fonctionnalités, je les ai juste besoin pendant le développement.

90voto

fantabolous Points 431

Je pense qu'il est utile de mentionner qu'il existe de nombreux scénarios dans lesquels le message You have not concluded your merge (MERGE_HEAD exists) pourrait apparaître, car de nombreuses personnes sont probablement arrivées sur cette page après avoir recherché ledit message. La résolution dépendra de la manière 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 recevez toujours ce message, cela pourrait être aussi simple que de faire

git add fichier
git commit

Mais encore une fois, cela dépend vraiment de la situation. Il est bon de comprendre les bases avant de tenter quoi que ce soit (même lien que celui que Terence a posté) : Git - Basic Merge Conflicts

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 résolution d'une fusion conflictuelle était la simple commande "git commit".

0 votes

Cela a été vraiment utile, après vérification, j'ai découvert que j'avais besoin d'ajouter un fichier que j'avais modifié sans le savoir.

54voto

Badr Bellaj Points 2036

Je pense que c'est la bonne méthode (cela peut supprimer les modifications locales) :

git merge --abort

git fetch --all

Ensuite, vous avez deux options :

git reset --hard origin/master

OU Si vous êtes sur une autre branche :

git reset --hard origin/

3 votes

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

0 votes

Réponse parfaite. Merci, celle-ci a économisé mon temps

1 votes

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

24voto

Akash Points 5697

L'avortement n'a pas fonctionné pour moi. Donc j'ai dû continuer et voici ce qui a fonctionné pour moi :

git merge --continue

1 votes

Cela a résolu mon problème, mais j'aimerais savoir comment ma branche en est arrivée à cet état.

0 votes

@AlexDresko, cela pourrait être parce qu'il n'y avait aucune différence entre votre branche et ce que vous essayez de fusionner après avoir résolu les conflits.

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