¿Cómo termino la fusión después de resolver mis conflictos de fusión?

Resuelto michael asked hace 14 años • 12 respuestas

He leído la sección Básica de ramificación y fusión del Libro de la comunidad de Git.

Entonces lo sigo y creo una rama: experimental.

Entonces yo:

  1. cambiar a la rama experimental (git checkout experimental)
  2. hacer un montón de cambios
  3. confirmarlo (git commit -a)
  4. cambiar a la rama maestra (git checkout master)
  5. hacer algunos cambios y comprometerse allí
  6. volver a experimental (git checkout experimental)
  7. merge master cambiar a experimental (git merge master)
  8. hay algunos conflictos pero después de resolverlos, hice 'git add myfile'

  9. Y ahora estoy estancado, no puedo volver a dominar

Cuando lo hago

 $ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

y lo hice:

$ git rebase --abort

¿No hay rebase en progreso?

y lo hice :

$  git add res/layout/socialhub_list_item.xml
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

¿Qué puedo hacer para poder volver a mi rama maestra?

michael avatar Mar 19 '10 06:03 michael
Aceptado

Cuando hay un conflicto durante una fusión, debe finalizar la confirmación de la fusión manualmente. Parece que ha realizado los dos primeros pasos: editar los archivos que entraron en conflicto y luego ejecutarlos git addpara marcarlos como resueltos. Finalmente, necesitas confirmar la fusión con git commit. En ese momento podrás volver a cambiar de rama.

Consejo rápido : puede utilizarlo git commit -am "your commit message"para realizar operaciones de agregar y confirmar en archivos rastreados simultáneamente. (Crédito: @vaheeds)

Jimmy avatar Mar 18 '2010 23:03 Jimmy

¿Cómo termino la fusión después de resolver mis conflictos de fusión?

Con Git 2.12 (Q1 2017), tendrás el comando más natural:

git merge --continue

Y si no desea editar el mensaje al continuar/reanudar la combinación:

git merge --continue --no-edit

Si --no-editno funciona, como informó akseli en los comentarios , puedes hacer:

# Linux
GIT_EDITOR=true git merge --continue

# Windows
cmd /V /C "set "GIT_EDITOR=true" && git merge --continue"

Puede definir un alias para esos comandos.

Es decir, como lo explica mgnobody en los comentarios:

si ejecuta fusionar y obtiene conflictos, solo debe hacerlo git adddespués de resolver los conflictos.
NO lo hagas git commitdespués git add. Tu git merge --continuelo harás por ti.

Entonces, en resumen:

git merge develop 
# address conflicts 
git add <conflicted files> 
git merge --continue;

Consulte el compromiso c7d227d (15 de diciembre de 2016) de Jeff King ( peff) .
Consulte el compromiso 042e290 , el compromiso c261a87 , el compromiso 367ff69 (14 de diciembre de 2016) de Chris Packham ( cpackham) .
(Fusionado por Junio ​​C Hamano -- gitster-- en la confirmación 05f6e1b , 27 de diciembre de 2016)

Consulte las notas de la versión 2.12 .

merge: agregue --continuela opción '' como sinónimo de ' git commit'

Enseñe a ' git merge' la --continueopción que permite 'continuar' una fusión al completarla.
La forma tradicional de completar una fusión después de resolver conflictos es utilizar ' git commit'.
Ahora, con comandos como ' git rebase' y ' git cherry-pick' tener una --continueopción '', agregar dicha opción a ' git merge' presenta una interfaz de usuario consistente.

VonC avatar Dec 28 '2016 20:12 VonC

En caso de que alguna vez te quedes atascado durante una fusión/rebase, siempre puedes

git reset --hard

para restaurar su trabajo al estado de la última confirmación. Esto perderá los cambios del árbol de trabajo, por lo que si tenía modificaciones locales antes de la fusión, desaparecerán después de esto; es por eso que es recomendable no iniciar una fusión cuando tenga modificaciones locales. :)

Bombe avatar Mar 20 '2010 11:03 Bombe

Los siguientes pasos después de resolver los conflictos manualmente son: -

  1. git agregar.
  2. git status (esto le mostrará qué comandos son necesarios para continuar con el procedimiento de fusión automática)
  3. [el comando git sugiere, por ejemplo git merge --continue, git cherry-pick --continue, git rebase --continue]
Timidfriendly avatar Feb 19 '2016 14:02 Timidfriendly