Non hai concluso la tua unione (esiste MERGE_HEAD)


1036

Ho creato un ramo chiamato 'f' e ho fatto un checkout da padroneggiare. Quando ho provato il git pullcomando ho ricevuto questo messaggio:

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

Quando provo il git status, mi ha dato quanto segue:

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

Cosa dovrei fare?

Risposte:


1920

OK. Il problema è che il pull precedente non è riuscito a fondersi automaticamente e è andato in stato di conflitto. E il conflitto non è stato risolto correttamente prima della prossima attrazione.

  1. Annulla l'unione e tira di nuovo.

    Per annullare una fusione:

    git merge --abort [Dalla versione 1.7.4 di git]

    git reset --merge [versioni precedenti di git]

  2. Risolvi il conflitto.

  3. Non dimenticare di aggiungere e confermare l'unione.

  4. git pull ora dovrebbe funzionare bene.


2
Ho provato e mi ha dato il conflitto nei file (quando pull) Unione automatica app / views / layouts / application.html.erb Auto-fusione log / development.log CONFLICT (contenuto): Unisci conflitto in log / development.log Auto-fusione log / restclient.log CONFLICT (contenuto): unione conflitto in log / restclient.log Unione automatica non riuscita; correggere i conflitti e quindi eseguire il commit del risultato. Ho corretto i file locali specificati e quindi ho provato 'git pull' Pull non è possibile perché hai file non uniti. Correggili nell'albero di lavoro, quindi usa 'git add / rm <file>' come appropriato per contrassegnare la risoluzione, oppure usa 'git commit -a'.
Ankit Suri,

1
@AnkitSuri, dopo aver risolto i conflitti, li hai messi in scena e commessi?
Karthik Bose,

1
L'ho provato e mi aiuta a rimettermi in moto. Dopo il ripristino ho provato "git mergetool". Si associa direttamente allo strumento di fusione.
CoDe,

4
Non funziona:[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, alla fine ha funzionato. Dal momento che stavo lavorando su SSH, ho dovuto iniziare una nuova sessione e fare un git status.
user1429980

97

Se sei sicuro di aver già risolto tutti i conflitti di unione:

rm -rf .git/MERGE*

E l'errore scompare.


2
se rimuovi MERGE_HEAD, il commit risultante non avrà un solo genitore, quindi non avrai la cronologia del ramo unito?
Jason Goemaat,

2
questo è quello che volevo
Raditya Gumay

1
@JasonGoemaat nel mio caso sto temporaneamente unendo più PR che non sono ancora state accettate. Non ho intenzione di eseguire il commit di tali fusioni nel ramo delle funzionalità, ne ho solo bisogno durante lo sviluppo.
Andy,

Avevo già risolto i miei conflitti e continuavo a riscontrare questo errore. Quindi il comando ha funzionato per me.
Sibgha,

Questo mi ha salvato da un brutto ciclo di conflitti di unione.
Slitta,

68

Penso che valga la pena ricordare che ci sono numerosi scenari in cui il messaggio You have not concluded your merge (MERGE_HEAD exists)potrebbe verificarsi, perché molte persone sono probabilmente arrivate a questa pagina dopo aver cercato quel messaggio. La risoluzione dipenderà da come ci sei arrivato.

git status è sempre un utile punto di partenza.

Se hai già unito i contenuti in modo soddisfacente e stai ancora ricevendo questo messaggio, potrebbe essere semplice come farlo

git add file
git commit

Ma di nuovo, dipende davvero dalla situazione. È una buona idea capire le basi prima di provare qualsiasi cosa (stesso link pubblicato da Terence): Git - Conflitti di unione di base


Grazie per averlo chiesto, per quelli di noi con il tipo di problema più semplice. Lo "stato Git" era ciò di cui un principiante come me aveva bisogno, per ricordare che l'ultimo passo per correggere una fusione in conflitto era il semplice comando "git commit".
Dana,

17

Penso che questo sia il modo giusto:

git merge --abort

git fetch --all

Quindi, hai due opzioni:

git reset --hard origin/master

OPPURE Se ti trovi in ​​un'altra filiale:

git reset --hard origin/<branch_name>

2
solo git merge - l'aborto ha funzionato da solo && git pull then
luky

8

Ho risolto i conflitti e mi sono anche impegnato, ma ho ancora visualizzato questo messaggio di errore git push

Tutti i conflitti sono stati risolti ma ti stai ancora unendo.
(usa "git commit" per concludere l'unione)

Ho fatto questi passaggi per risolvere l'errore:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name

Cosa pushrealizza alla fine?
Mark Storer,

6

Provare

git reset --hard origin/trunk

"trunk" è il ramo che sto cercando di raggiungere.

Non so come o perché funzioni. Ha avuto a che fare con qualche commit che ho fatto che stava costringendo le mie richieste pull a fare una fusione.


5

Prova a cambiare qualsiasi file temporaneo. Come rimuovere qualsiasi spazio o aggiungere spazio e quindi eseguire il commit e il push di quel file.

git aggiungi 'temporary_change_file'

git commit -m "risoluzione dei problemi git"

git push origin si sviluppa

E poi prova git pull,

git pull origin si sviluppa

Spero che questo possa aiutarti.


4

blockquote

Se stai provando a tirare da un altro ramo nel tuo ramo. Se visualizzi questo errore.

Innanzitutto, dovresti provare a fare git commit e quindi tirare un altro ramo nel tuo.

  1. "git add."
  2. git commit
  3. Quindi eseguire git pull dal ramo richiesto.

3

Nel mio caso avevo una scelta di ciliegia che produceva un certo numero di conflitti di unione, quindi decido di non completare la scelta di ciliegia. Ho scartato tutte le mie modifiche. In questo modo mi metti in uno stato in cui ho ricevuto il seguente errore:

Non hai concluso la tua unione (esiste MERGE_HEAD

Per risolvere il problema ho eseguito il seguente comando git che ha risolto il problema.

git cherry-pick --abort

2

L'approccio migliore è annullare l'unione ed eseguire nuovamente l'unione. Spesso si incasina l'ordine delle cose. Prova a risolvere i conflitti e mettiti nei guai.

Quindi annulla e fallo di nuovo.

Assicurarsi di disporre della configurazione degli strumenti diff appropriata per il proprio ambiente. Sono su un Mac e uso DIFFMERGE. Penso che DIFFMERGE sia disponibile per tutti gli ambienti. Le istruzioni sono qui: Installa DIFF Merge su un MAC

Ho questo utile a risolvere i miei conflitti: Git Basic-Merge-Conflicts


1

in primo luogo, utilizzare git pullper unire il repository salvare il change.then ridigitare git commit -m "your commit".


0

Conferma modifiche unione ha risolto il mio problema:

git commit -m "commit message"

-12

Questo ha funzionato per me:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status

3
Prima di tutto, questo cancellerà tutte le modifiche alla directory di lavoro. Anche la versione hardcoded non è utile, forse qualcosa come HEAD ^ è migliore.
Entomo,

@ Plus1 Questo è esattamente ciò di cui ho bisogno: rimuovere i miei commit locali errati e applicare le modifiche rispetto al codice sorgente modificato. La ringrazio per la risposta!
amuliar

Ha causato un problema nel mio caso
Shafiq,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.