¿Cómo termino la fusión después de resolver mis conflictos de fusión?
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:
- cambiar a la rama experimental (git checkout experimental)
- hacer un montón de cambios
- confirmarlo (git commit -a)
- cambiar a la rama maestra (git checkout master)
- hacer algunos cambios y comprometerse allí
- volver a experimental (git checkout experimental)
- merge master cambiar a experimental (git merge master)
hay algunos conflictos pero después de resolverlos, hice 'git add myfile'
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?
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 add
para 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)
¿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-edit
no 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 add
después de resolver los conflictos.
NO lo hagasgit commit
despuésgit add
. Tugit merge --continue
lo 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--continue
la opción '' como sinónimo de 'git commit
'
Enseñe a '
git merge
' la--continue
opció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--continue
opción '', agregar dicha opción a 'git merge
' presenta una interfaz de usuario consistente.
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. :)
Los siguientes pasos después de resolver los conflictos manualmente son: -
- git agregar.
- git status (esto le mostrará qué comandos son necesarios para continuar con el procedimiento de fusión automática)
- [el comando git sugiere, por ejemplo
git merge --continue
,git cherry-pick --continue
,git rebase --continue
]