El truco está en "agregar una versión al índice": eso marcaría el archivo como resuelto (es decir, no más "nuestro" o "suyo").
Así que debe ser el último paso.
Tal vez algo como:
git show :3:<filename> > <filename>.theirs # save the "theirs" version in a tmp file
git show :2:<filename> > <filename> # display the "ours" version in the working dir
git add <filename> # add it to the index
# (marking the conflicting file as resolved)
move <filename>.theirs <filename> # erasing the file with the "theirs" version
# in the working directory
No exactamente "sin dolor" ...
Para evitar el archivo temporal, Jakub Narębski sugiere el uso de git update index
(un comando de plomería) para manipular directamente El índice.
--replace --cacheinfo <mode> <object> <path>
--cacheinfo
se utiliza para registrar un archivo que no está en el directorio de trabajo actual. Esto es útil para la fusión de la comprobación mínima.
De forma predeterminada, cuando existe una ruta de archivo en el índice, git update-index rechaza un intento de agregar path/file
. De manera similar, si existe un archivo path/file
, no se puede agregar una ruta de archivo. Con el indicador --replace
, las entradas existentes que entran en conflicto con la entrada que se agrega se eliminan automáticamente con mensajes de advertencia.
Actualmente es la versión 'nuestra' (de la rama actual en la que se fusiona), la versión 'suya' (de la rama que se está fusionando) y la versión 'ancestro' (antecesor común de ambas ramas) - no la versión anterior en general. –