¿Obligar a Git a elegir siempre la versión más nueva durante una fusión?
103
Supongamos que mergegit y hay un conflicto de fusión.
Mi pregunta es: ¿cómo puedo obligar a git a elegir siempre la versión más nueva del código en conflicto para no tener que resolver el conflicto a mano?
pero quiero hacer una fusión (no anular las confirmaciones), pero además para resolver los conflictos automáticamente.
bartek
Respuestas:
188
No es exactamente la versión "más nueva", pero puedes decirle a git que siempre prefiera la versión en la rama actual usando git merge branch -X ours, o que prefiera la versión de la rama que se está fusionando, usando git merge branch -X theirs.
De man git-merge:
la nuestra:
Esta opción obliga a los trozos en conflicto a que se resuelvan automáticamente de forma limpia al favorecer nuestra versión. Los cambios del otro árbol que no entran en conflicto con nuestro lado se reflejan en el resultado de la fusión. Para un archivo binario, todo el contenido se toma de nuestro lado.
ours- theirs!! ¡Dígalo y comprenderá lo que hace el comando! ¡Amo a Git! : D
Haywire
14
nota: si ya lo ha usado git merge branch, deberá git merge --aborthacerlo antes de poder hacer esto.
John Dvorak
1
No funciona para mi. Todavía aborta la fusión. error: The following untracked working tree files would be overwritten by merge:Ni siquiera sé por qué estos archivos están en esta rama en primer lugar, pero deberían sobrescribirse y git se niega.
mcv
2
Si no tienen seguimiento, git addprimero debe eliminarlos (o ). Lea un poco sobre git clean, puede ayudarlo con eso.
Renato Zannon
Después de ejecutar git merge ours, si hay algunos archivos de conflicto, ¿habrá algún registro? y podría rastrear el de git merge ours?
Esta solución me ayudó a solucionar conflictos no fusionados cuando todo lo que quería era anular con la rama maestra. Usé git reset --hard master (de local)
Respuestas:
No es exactamente la versión "más nueva", pero puedes decirle a git que siempre prefiera la versión en la rama actual usando
git merge branch -X ours
, o que prefiera la versión de la rama que se está fusionando, usandogit merge branch -X theirs
.De
man git-merge
:fuente
ours
-theirs
!! ¡Dígalo y comprenderá lo que hace el comando! ¡Amo a Git! : Dgit merge branch
, deberágit merge --abort
hacerlo antes de poder hacer esto.error: The following untracked working tree files would be overwritten by merge:
Ni siquiera sé por qué estos archivos están en esta rama en primer lugar, pero deberían sobrescribirse y git se niega.git add
primero debe eliminarlos (o ). Lea un poco sobregit clean
, puede ayudarlo con eso.git merge ours
, si hay algunos archivos de conflicto, ¿habrá algún registro? y podría rastrear el degit merge ours
?Yo uso esto,
fuente