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

1037

J'ai créé une branche appelée «f» et j'ai effectué un paiement à maîtriser. Lorsque j'ai essayé la git pullcommande, j'ai reçu ce message:

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

Lorsque j'essaie le git status, cela m'a donné 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 devrais-je faire?

Ankit Suri
la source

Réponses:

1921

D'ACCORD. 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 la prochaine traction.

  1. Annulez la fusion et tirez à nouveau.

    Pour annuler une fusion:

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

    git reset --merge [versions précédentes de git]

  2. Résolvez le conflit.

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

  4. git pull devrait maintenant fonctionner correctement.

Karthik Bose
la source
2
J'ai essayé et m'a donné un conflit dans les fichiers (lors de l'extraction) Fusion automatique de l'application / vues / mises en page / application.html.erb Fusion automatique du journal / development.log CONFLICT (contenu): Fusion du conflit dans le journal / development.log Fusion automatique log / restclient.log CONFLICT (contenu): conflit de fusion dans log / restclient.log La fusion automatique a échoué; résoudre les conflits, puis valider 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'arborescence de travail, puis utilisez 'git add / rm <file>' comme approprié pour marquer la résolution, ou utilisez 'git commit -a'.
Ankit Suri
1
@AnkitSuri, Après avoir résolu les conflits, les avez-vous mis en scène et commis?
Karthik Bose
1
Je l'ai essayé et cela m'aide à reprendre le chemin. Après être revenu, j'ai essayé "git mergetool". Il s'associe directement avec l'outil de fusion.
CoDe
4
Ne fonctionne pas:[env]$ git merge --abort fatal: You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.
user1429980
1
@KarthikBose, cela a fini par fonctionner. Puisque je travaillais sur SSH, j'ai dû commencer une nouvelle session et faire un git status.
user1429980
98

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.

knagode
la source
2
si vous supprimez MERGE_HEAD, la validation résultante n'aura-t-elle qu'un seul parent, vous n'aurez donc pas l'historique de la branche fusionnée?
Jason Goemaat
2
c'est ce que je voulais
raditya gumay
1
@JasonGoemaat dans mon cas, je fusionne temporairement dans plusieurs RP qui n'ont pas encore été acceptés. Je ne prévois pas de valider ces fusions sur la branche des fonctionnalités, j'en ai juste besoin pendant le développement.
Andy
J'avais déjà résolu mes conflits et j'obtenais toujours cette erreur. La commande a donc fonctionné pour moi.
Sibgha
Cela m'a sauvé d'une boucle de conflit de fusion méchante.
Sledge
68

Je pense qu'il convient de mentionner qu'il existe 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 y êtes arrivé.

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

Si vous avez déjà fusionné le contenu à votre satisfaction et recevez toujours ce message, cela pourrait être aussi simple que de le 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 d'essayer quoi que ce soit (même lien que Terence a posté): Git - Basic Merge Conflicts

fantabolique
la source
Merci d'avoir posé cette question, pour ceux d'entre nous avec 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 pour corriger une fusion conflictuelle était la simple commande "git commit".
Dana
18

Je pense que c'est la bonne façon:

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/<branch_name>
Badr Bellaj
la source
2
seulement git merge --abort a travaillé lui-même && git pull then
luky
8

J'ai résolu des conflits et j'ai également commis, mais je reçois toujours ce message d'erreur git push

Tous les conflits sont résolus mais vous fusionnez toujours.
(utilisez "git commit" pour conclure la fusion)

J'ai fait ces étapes pour résoudre l'erreur:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name
Taimoor Changaiz
la source
Qu'est-ce que pushla fin accomplit?
Mark Storer
6

Essayer

git reset --hard origin/trunk

«tronc» est la branche vers laquelle j'essaye d'accéder.

Je ne sais pas comment ni pourquoi cela fonctionne. Cela avait quelque chose à voir avec une validation que j'avais faite, ce qui forçait mes demandes de pull à faire une fusion.

Franklin
la source
5

Essayez de modifier un fichier temporaire. Comme supprimer tout espace ou ajouter de l'espace, puis valider et pousser ce fichier.

git ajouter 'fichier_change_temporaire'

git commit -m "git issue resolving"

git push origin develop

Et puis essayez git pull,

git pull origin develop

J'espère que cela pourrait vous aider.

Kazim Noorani
la source
4

Blockquote

Si vous essayez de passer d'une autre branche à votre branche. Si vous voyez cette erreur.

Tout d'abord, vous devriez essayer de faire git commit puis tirer une autre branche dans la vôtre.

  1. "git add."
  2. git commit
  3. Ensuite, faites git pull depuis la branche requise.
Rohith
la source
3

Dans mon cas, j'avais un choix de cerise qui produit un certain nombre de conflits de fusion, donc je décide de ne pas terminer le choix de cerise. J'ai rejeté toutes mes modifications. Cela m'a mis dans un état où j'ai reçu l'erreur suivante:

Vous n'avez pas conclu votre fusion (MERGE_HEAD existe

Pour résoudre le problème, j'ai exécuté la commande git suivante qui a résolu le problème.

git cherry-pick --abort
Cosmo Scrivanich
la source
2

La meilleure approche consiste à annuler la fusion et à effectuer à nouveau la fusion. Souvent, vous obtenez l'ordre des choses foiré. Essayez de résoudre les conflits et mettez-vous dans le pétrin.

Alors, annulez et fusionnez à nouveau.

Assurez-vous que vous disposez des outils de différenciation appropriés pour votre environnement. Je suis sur un Mac et j'utilise DIFFMERGE. Je pense que DIFFMERGE est disponible pour tous les environnements. Les instructions sont ici: Installer DIFF Merge sur un MAC

J'ai cette solution utile pour résoudre mes conflits: Git Basic-Merge-Conflicts

Terence
la source
1

tout d'abord, utilisez git pullpour fusionner le référentiel, enregistrez votre modification, puis retapez git commit -m "your commit".

Jack loner
la source
0

Les modifications de fusion de commit ont résolu mon problème:

git commit -m "commit message"
sai
la source
-12

Cela a fonctionné pour moi:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status
Plus1
la source
3
Tout d'abord, cela supprimera toutes les modifications du répertoire de travail. De plus, la version codée en dur n'est pas utile, peut-être que quelque chose comme HEAD ^ est mieux.
Entomo
@ Plus1 C'est exactement ce dont j'ai besoin - supprimez mes mauvais commits locaux et appliquez les modifications par rapport au code source modifié. Merci pour votre réponse!
Amuliar
Cela a causé un problème dans mon cas
Shafiq