Solía hacer resolución de conflictos con P4merge. Lo encontré bien, pero no presté atención a cómo funciona debajo del capó. Hasta hace muy poco me di cuenta de que intenta hacer la fusión por sí mismo. Como resultado, no muestra los mismos conflictos que git y eso frustró a mi gerente (como en let's switch back to clearcase
frustrado).
La pregunta es: git agrega anotaciones a un archivo que no puede fusionarse de manera similar a estas
<<<<<<< HEAD
this code
=======
the other code
>>>>>>> feature/branch-name
¿Existe una herramienta gráfica que lea estas anotaciones y luego le dé la opción de mantener una u otra y luego eliminar las anotaciones?
La herramienta debe ser para Linux y preferiblemente gratuita, pero dado que la organización se hará cargo del costo, también se puede pagar.
Desafortunadamente kdiff3
tampoco respeta las anotaciones. En primer lugar, la configuración no funcionó, pero no es gran cosa, cambié el .gitconfig
a
[mergetool "kdiff3"]
cmd = /path/to/kdiff3 $BASE $REMOTE $LOCAL -o $MERGED
Y funcionó. Pero luego kdiff3
informó esto:
No es exactamente lo que esperaba: tuve 4 conflictos y la herramienta dice que hay 2. Además, el Nr of automatically solved conflicts
mensaje me hace pensar que kdiff3
aplica su propio algoritmo de fusión, que es lo contrario de lo que queremos.
kdiff3
puede manejar esto. Es una diff
herramienta genérica de visor y combinación (también se puede usar fuera de cualquier VCS, por ejemplo, para comparar el contenido de los directorios).
Si lo usa, git
puede tener esto en su gitconfig
:
[mergetool "kdiff3"]
trustExitCode = false
keepBackup = false
[merge]
tool = kdiff3
conflictstyle = diff3
para que git mergetool
después de una combinación fallida, la herramienta se inicie automáticamente.
kdiff3
intentará fusionar para usted las cosas triviales y le presentará una ventana de 4 paneles para resolver las cosas no triviales, según las git
anotaciones de fallas de fusión.
La fila superior se divide en 3 áreas para mostrarle:
La fila inferior es un texto editable que es el resultado de la combinación, según sus elecciones.
Puede seleccionar las opciones A, B o C para aplicar los cambios en A, B o C en la fusión resultante. O puede editar las cosas usted mismo en el editor de texto inferior.
Vea esta captura de pantalla: http://kdiff3.sourceforge.net/doc/screenshots.html#dirmergebigscreenshot
kdiff3
es software gratuito y funcionará en todos los lugares donde funcione KDE. La interfaz está un poco anticuada pero funciona.
Otras opciones:
meld
, consulte http://meldmerge.org/ ; la interfaz de usuario es más bonita que kdiff3
pero la encontré menos completa en cuanto a funciones para mis necesidadesgit-config
debajo de la merge.tool
tecla, verás una lista de softwares que git conoce para resolver fusiones. Esto podría darle ideas sobre cosas para probar para encontrar la mejor para usted. En mi instalación, la lista es: araxis
, bc
, bc3
, codecompare
, deltawalker
, diffmerge
, diffuse
, ecmerge
, emerge
, examdiff
, , gvimdiff
, gvimdiff2
, gvimdiff3
, kdiff3
, meld
, opendiff
, p4merge
, tkdiff
, tortoisemerge
, vimdiff
, vimdiff2
, vimdiff3
,winmerge
xxdiff
meld
pero no estábamos contentos con él. También probamos IntelliJ
la fusión con el mismo resultado. No puedo probar rápidamente kdiff3
porque estoy en RHEL, con Gnome y un repositorio local sin Qt
. Tomará algún tiempo antes de dar mi opinión.-1
respuesta, aunque no tengo la intención de votar negativamente. kdiff3
no parece respetar las anotaciones, la captura de pantalla no lo prueba y meld también realiza su propia combinación. Entonces, a menos que me haya perdido algo en kdiff3
la configuración de , esa no es una respuesta correcta. Aunque me he enterado de conflictstyle = diff3
que estaba ignorando hasta ahora.kdiff3
no coinciden con las suyas, lo siento. Desde mi uso, siempre funcionó correctamente con git, haciendo todas las fusiones posibles por sí mismo y dejándome con los demasiado complicados para resolverlos automáticamente. Tenga en cuenta también que no tuve que configurar git de la forma en que necesitaba hacerlo, por lo que tal vez tenga una configuración muy diferente. Lo siento si no te funciona, espero que luego obtengas otras mejores respuestas.Si está abierto a aprender a usar Emacs o Vim, ofrecen exactamente lo que desea gracias a ediff y vimdiff respectivamente:
No están ejecutando ningún algoritmo: Git hace el trabajo. Simplemente son interfaces que hacen que sea más agradable resolver el conflicto.
Para usar ediff, abra su archivo en Emacs y ejecute smerge-ediff
o configure Emacs para que lo inicie automáticamente. Consulte esta respuesta de Emacs Stack Exchange para obtener una imagen de la interfaz y los detalles de las combinaciones de teclas. Una alternativa es instalar el paquete magit que usa ediff magit-ediff
.
Para usar vimdiff, puede configurarlo como sus herramientas de combinación en la configuración de Git. La interfaz es bastante similar.
patricio mevzek
kdiff3
resuelve automáticamente los conflictos basándose únicamente en problemas de espacios en blanco. Pero tiene muchas opciones para configurar en su configuración si desea cambiar su comportamiento. Consulte stackoverflow.com/a/15813064/6368697 : "si realmente desea deshabilitar cualquier resolución automática, simplemente agregue --qall a la línea de comando kdiff3". También dijiste que tienes 4 conflictos y la herramienta dice 2 pero sin ver lo que estás viendo es difícil entender tu situación y por qué la discrepancia.Stelios Adamantidis
kdiff3
ni ninguna otra herramienta para resolver conflictos por sí sola . Quiero que respete los conflictos que produce git en lugar de rehacer la fusión.patricio mevzek
--qall
_ De la ayuda: "No resolver conflictos automáticamente". Siempre pensé que es uno de sus puntos fuertes, así que no tengo que perder el tiempo en conflictos triviales, pero al menos tienes la opción de desactivarlo. YMMV.