Al realizar una git merge
con las siguientes opciones:
git merge -X theirs master
A veces hay files en conflicto como este:
CONFLICTO (modificar / eliminar): File_A.java eliminado en el maestro y modificado en HEAD. Versión HEAD de File_A.java dejada en el tree.
Sin embargo, me gustaría que la opción -X theirs
sea reconocida en estos casos, y use la versión theirs
del cambio, que es para que el file se elimine.
¿Existe alguna razón por la cual este tipo de conflicto no se resuelva automáticamente, especialmente dado que proporciono una estrategia de fusión específica que sugiere que debería eliminar el file?
Además, ¿cómo (si es posible) puedo actualizar mi command de merge
para usar theirs
versión de este tipo de conflicto?
Parece que theirs
opción de estrategia recursive
(esto es lo que realmente usa, vea que [1]) no afecta la fusión de tree, solo se usa para la fusión de contenido de files cuando ambos files se modifican únicamente. Realmente no sé si hay alguna opción de command de fusión que pueda hacer lo que quiera. Podría tratar de crear un script que explore files en conflicto (con git status --porcelain
) y luego elimine el file ( git rm --force <file>
) u obtenga la versión remota del mismo ( git checkout --theirs <file>
)
[1] https://www.kernel.org/pub/software/scm/git/docs/git-merge.html#_merge_strategies
Además, ¿cómo (si es posible) puedo actualizar mi command de fusión para usar su versión de este tipo de conflicto?
Deberá usar los controlleres de combinación .
Deberá crear su propio controller y confutación en el file .gitattribute
.
Aquí hay una list de Q relacionadas que pueden serle útiles.
Cada uno adjunta este problema en un ángulo diferente