¿Cuál es la mejor herramienta de combinación visual para Git?


481

¿Cuál es la mejor herramienta para ver y editar una fusión en Git? Me gustaría obtener una vista de combinación de 3 vías, con "mío", "suyo" y "ancestro" en paneles separados, y un cuarto panel de "salida".

Además, las instrucciones para invocar dicha herramienta serían geniales. (Todavía no he descubierto cómo iniciar kdiff3 de tal manera que no me da un error.)

Mi SO es Ubuntu.

  0

¿Para qué sistema operativo desea obtener instrucciones? 26 sep. 082008-09-26 00:45:49

+2

Usar kdiff3 con "git mergetool" debería funcionar bien. No he tenido problemas con eso. 30 sep. 102010-09-30 14:05:09

  0

Para simplemente dif, haz 'kdiff3 file1 file2a' o' kdiff3 file1 file2a file2b' (esto supone que 'file1' es un ancestro común a' file2a' y 'file2b'), y haz una fusión de tres vías con esos archivos y la salida del archivo fusionado a 'archivo3' do' kdiff3 -b archivo1 archivo2a archivo2b -o archivo3'. 02 mar. 112011-03-02 18:45:14

+3

"Pero ahora no está permitido", sí, es por eso que odio stackoverflow hoy en día. Es demasiado seco y aburrido sin esas preguntas. 03 mar. 162016-03-03 00:50:21

  0

Si esta pregunta estuviera abierta, respondería sugiriendo [xxdiff] (http://furius.ca/xxdiff/). 4 visualizaciones de archivos y diferencias de nivel de palabras en cada línea 02 jul. 162016-07-02 12:05:30

+2

¿Hay un sitio stackexchange donde se permita este tipo de pregunta? De lo contrario, debería haber ... 07 jul. 162016-07-07 00:58:34

+2

Parece que es hora de un nuevo desbordamiento de pila donde tales preguntas están permitidas. Claramente, muchos dijeron que tales preguntas son valiosas para tanta gente que es simplemente estúpido cerrarlas. Creo que has ido por la borda con la burocracia. ¿Qué tal si haces una encuesta sobre este tema y ves lo que tus "clientes" quieren? P 09 sep. 162016-09-09 11:49:23

+1

Hay https://softwarerecs.stackexchange.com/ 13 feb. 172017-02-13 16:34:49

  0

Depende. kdiff3 y p4merge son gratuitos y funcionan fácilmente con git. kdiff3 tiene la característica --auto que es útil para scripting. He descubierto que p4merge es significativamente mejor en la resolución automática de conflictos. 06 abr. 172017-04-06 17:23:19

  0

El problema: softwarerecs es inútil porque los expertos están aquí, no allí. 27 jun. 172017-06-27 17:09:27

283

Meld es una herramienta de diferencias/fusión.

Así es como instalarlo en:

+2

No hay versión de Windows por lo que puedo decir, y no utiliza una vista de 3 vías, lo que significa que no se obtiene una vista previa de la versión final. 26 sep. 082008-09-26 00:45:04

+49

De hecho, tiene una vista de 3 vías, y el cartel original ejecuta Linux, no Windows, así que no veo por qué eso es un problema. 26 sep. 082008-09-26 07:21:10

+48

¿a quién le importa el SO que usa el autor original ?, la pregunta es lo suficientemente general como para ser de interés para todos los que la buscan. Y la diferencia de 3 vías es cuando realmente ves 4 paneles con prueba; merge-base/local/remote/result 23 ene. 112011-01-23 13:16:41

+10

'meld' es tedioso con diffs complejos, pudiendo seleccionar opciones como' elegir b para todos los conflictos no resueltos' es mucho mejor que tener que hacer clic manualmente en la flecha correcta para cada trozo en ' meld' Además, ser capaz de fusionarse en un archivo de salida específico en lugar de editar los archivos de entrada en su lugar es invaluable para evitar los nervios fallidos. 02 mar. 112011-03-02 18:51:52

+17

Meld funciona bien en Windows, pero antes tienes que instalar python y luego pygtk. A continuación, cambie el nombre bin/meld a meld.py y haga doble clic en él. 21 abr. 112011-04-21 00:06:55

  0

Meld no funciona correctamente como herramienta de combinación con git ya que muestra marcadores de fusión. 22 dic. 112011-12-22 13:38:10

+4

¿Meld es realmente la mejor opción? Es feo y no es intuitivo en mi opinión. 04 mar. 122012-03-04 14:56:18

  0

@jnnnnn puedo confirmar que meld definitivamente funciona en Windows. solo le falta el instalador. 09 ago. 122012-08-09 15:45:20

  0

El enlace de Ubuntu está muerto ahora, si pudiera actualizarlo? :) 13 feb. 132013-02-13 14:47:57

+1

@jooks http://meldmerge.org/. Meld podría no ser el mejor, pero funciona muy bien para mí :) 14 feb. 132013-02-14 08:03:59

+3

@naxa Meld ahora tiene un instalador de Windows: https://code.google.com/p/meld-installer/ 18 mar. 132013-03-18 11:01:49

+2

Dios mío, ¿cuántos años tiene esto? ? Fink para OS X? 26 mar. 132013-03-26 17:03:48

  0

Para Ubuntu es exactamente lo que necesitaba https://gist.github.com/fedir/7661179 26 nov. 132013-11-26 16:16:24

+2

Ahora hay un instalador de meld windows (desde al menos 1.8). Vaya a su sitio y tienen un enlace a Sourceforge. Fue Google Code, luego se movió, quién sabe qué pasará. Por lo tanto, verifique su sitio para ver el enlace. 30 abr. 142014-04-30 17:14:12

  0

Gracias hombre que hizo mi día. 13 jul. 152015-07-13 10:26:43

  0

El enlace de Mac está desactivado. Aquí hay otro: http://www.alexkras.com/how-to-run-meld-on-mac-os-x-yosemite-without-homebrew-macports-or-think/ 29 sep. 152015-09-29 18:02:57

+1

'suave' no funciona bien cuando los conflictos en git, 'p4merge' es mejor. 04 feb. 162016-02-04 15:23:46

  0

Utilizo la herramienta visual de git dentro de NetBeans y funciona como un amuleto para mí. 12 abr. 162016-04-12 09:14:29

+2

kdiff3 le permite ver 4 vistas, meld solo permite 3 visitas. Meld no es una herramienta de fusión real, es una herramienta de diferencia ya que no muestra la vista de versión base. 05 may. 162016-05-05 18:44:50

  0

Nota: necesita instalar Python 3.3 o superior para la última 'meld'. 10 ene. 172017-01-10 05:36:18

+1

Meld tiene algunos problemas. Hace realmente molesto hacer cambios de "Mine then theirs". Y es algo difícil de leer a veces. 08 may. 172017-05-08 15:41:38

+2

Meld es horrible, especialmente para las fusiones. No tiene la opción de "transferir automáticamente los cambios no conflictivos", lo que hace que cada combinación sea terriblemente dolorosa. 25 may. 172017-05-25 22:40:13


38

Mi herramienta favorita de combinación visual es SourceGear DiffMerge

  • Es gratuito.
  • multiplataforma (Windows, OS X y Linux).
  • Limpiar visual UI
  • Todas las características de diff que esperarías (Diff, Merge, Folder Diff).
  • Interfaz de línea de comandos.
  • Accesos directos de teclado utilizables.

User interface

+3

¿cómo se configura para que funcione con git? 29 mar. 112011-03-29 21:59:56

  0

Nota, descarga gratuita. 22 feb. 122012-02-22 09:38:51

+2

¡Gracias por presentarmelo! : D Esta herramienta está limpia y tomó menos tiempo para instalar y trabajar que para fundirse. Paso media hora tratando de instalar meld. ¡Pero este lo hice en 5 minutos! 10 mar. 142014-03-10 16:03:05

+1

Nota: diffmerge no parece tener una función de combinación de 3 vías. Lo estoy abandonando después de intentarlo por un par de semanas por ese motivo 10 oct. 142014-10-10 15:30:36


34

Escucho cosas buenas sobre kdiff3, parece estar entre eso y meld (que otro cartel ya sugiere sted).

+3

+1: kdiff3 es muy superior a meld y también es compatible nativamente con git. 02 mar. 112011-03-02 18:37:42

+3

'kdiff3' tiene muchas más características, pero' meld' tiene una mejor IU. En mi opinión, 'meld' es mejor para fusiones fáciles donde las características proporcionadas por' meld' son suficientes. Recuerda probar 'diffuse' también. 07 ago. 132013-08-07 10:03:06

  0

kdiff3 le permite ver 4 vistas, meld solo permite 3 visitas. Meld no es una herramienta de fusión real, es una herramienta de diferencia ya que no muestra la vista de versión base. 05 may. 162016-05-05 18:41:53


7

Si sólo están buscando una herramienta de diferencias más allá de comparar es bastante agradable: http://www.scootersoftware.com/moreinfo.php


6

Puede cambiar la herramienta utilizada por mergetool git pasando git mergetool -t=<tool> o --tool=<tool>. Para cambiar el valor predeterminado (de vimdiff) use git config merge.tool <tool>.


15

Diffuse es mi favorito pero, por supuesto, soy parcial. :-) Es muy fácil de usar:

$ diffuse "mine" "output" "theirs" 

difusa es una pequeña y sencilla herramienta de combinación de texto escrito en Python. Con Diffuse, puede fusionar, editar y revisar fácilmente los cambios en su código. Difuso es software libre.

+1

Me gusta difusa, y no soy parcial. 11 sep. 092009-09-11 13:16:01

+2

@Derrick Moser: 'diffuse' se ve muy bien. Lo intenté ahora y me fue mejor que 'kdiff3'. Pero, estoy tratando de usarlo con 'git mergetool' y abre 4 archivos uno al lado del otro (local, merge-result, remote, base), y mi pantalla no es lo suficientemente amplia para eso. Tuve que hacer un montón de desplazamiento horizontal. kdiff3 solo muestra 3 uno al lado del otro y el resultado en la mitad inferior de la ventana. 09 dic. 102010-12-09 09:54:08

  0

diffuse tiene algunas opciones de fusión adicionales en comparación con meld (permite unir ambas versiones en lugar de elegir una de ellas). 26 abr. 132013-04-26 15:24:50

  0

diffuse funciona fuera de la caja en Windows, para comparar 2 carpetas, con CVP repo, con Git repo, fusionando conflictos de fusión de git. Los archivos dif diff se abren en pestañas en una sola ventana. Cambié a diffuse (después de haber usado ediff de emacs (demasiadas funciones, útiles en los 90)> vimdiff (teclas de plugins complicadas)> p4merge> araxis (propiedad)> meld (demasiado lento), tkdiff (solo cvs)> kdiff3 (bueno , buenas funciones de ignorar regex)> winmerge (bueno)> difuso (rápido, portátil, funciona como se esperaba)) la primera vez que probé difuso. 13 feb. 182018-02-13 02:41:07


-1

gitx http://gitx.frim.nl/

Algunos errores cuando se trabaja con conjuntos de cometer grandes, pero grandes para navegar a través de los cambios y recogiendo diferentes cambios de escenario y luego comprometerse.

  0

gitx solo hace diff, ¿verdad? 16 ene. 102010-01-16 01:14:05

+4

No disponible en Ubuntu 13 sep. 102010-09-13 14:03:21


19

Puede intentar P4Merge.

Visualice las diferencias entre las versiones de archivos con P4Merge. Resuelva los conflictos que resultan del desarrollo paralelo o concurrente a través de la codificación por colores.

Las características incluyen:

  • Resalta y editar texto diferencias de archivo
  • optar por incluir o ignorar los finales de línea o espacios en blanco
  • Reconocer convenciones fin de línea para Windows (CRLF), Mac (CR) y Unix (LF)
  • Usar parámetros de línea de comandos y ejecutar desde aplicaciones que no sean Perforce
  • Mostrar números de línea cuando la comparación y fusión de archivos
  • Excluir archivos que se modifican, único, o sin cambios
  • Filtrar archivos por nombre o extensión
  • Organizar activos en la jerarquía de archivos/carpetas familiarizado modificada
  • Comparar JPEG, GIF, TIFF, BMP, y otros formatos de archivo
  • Extender el uso de la API de Qt
  • las superposiciones de imágenes o pantalla de lado a lado
  • diferencias del punto culminante en imágenes superpuestas
  0

mejor que he visto hasta ahora. resuelva fácilmente los conflictos seleccionando el cambio de la lista de la vista tripartita 29 ago. 152015-08-29 10:11:36

  0

Nuevo enlace: https://www.perforce.com/downloads/helix#product-10 30 nov. 152015-11-30 15:58:14

  0

Repara el enlace https://www.perforce.com/ downloads/helix # clients 23 mar. 172017-03-23 10:56:49


77

Puede configurar su propia herramienta de combinación para usar con "git mergetool".

Ejemplo:

git config --global merge.tool p4merge 
    git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED' 
    git config --global mergetool.p4merge.trustExitCode false 

Y mientras usted está en él, también puede configurarlo como su difftool para "git difftool":

git config --global diff.tool p4merge 
    git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE' 

Nótese que en Unix/Linux usted don' t desea que el shell analice $BASE como una variable; debería aparecer en su archivo ~/.gitconfig para que funcione.

+1

P4Merge lo hace por mí. 16 jun. 102010-06-16 07:42:08

+8

Tenga en cuenta que, dado que p4merge es (ahora) una de las herramientas de combinación de git admitidas oficialmente, ya no debería ser necesario ensuciar con la variable * tool. *. Cmd. 03 may. 112011-05-03 15:52:46

+1

Asegúrese de estar utilizando la cita correcta: http://stackoverflow.com/a/1217994/3543437 21 mar. 162016-03-21 23:58:22


11

Araxis Merge http://www.araxis.com/ Lo estoy usando en Mac OS X pero lo he usado en Windows ... no es gratis ... pero tiene algunas características agradables ... más agradable en Windows.


1

Puede instalar ECMerge diff/merge tool en su Linux, Mac o Windows. Está preconfigurado en Git, por lo que solo usar git mergetool hará el trabajo.


57

Beyond Compare 3, mi favorito, tiene una funcionalidad merge en la edición Pro . Lo bueno de su fusión es que te permite ver las 4 vistas: base, izquierda, derecha y resultado combinado. Es algo menos visual que P4V pero mucho más que WinDiff. Es integrates with many source control y funciona en Windows/Linux. Tiene muchas características como reglas avanzadas, ediciones, alineación manual ...

The Perforce Visual Client (P4V) es una herramienta gratuita que proporciona una de las interfaces más explícitas para la fusión (ver some screenshots). Funciona en todas las plataformas principales.Mi principal decepción con esa herramienta es su tipo de interfaz de "solo lectura". No puede editar manualmente los archivos y no puede alinearlos manualmente.

PD: P4Merge está incluido en P4V. Perforce intenta hacer que sea un poco difícil obtener su herramienta sin su cliente.

SourceGear Diff/Merge puede ser mi segunda elección de herramienta gratuita. Compruebe que se fusionen screens-shot y verá que tiene al menos las 3 vistas.


Meld es una herramienta gratuita más reciente que preferiría SourceGear diferencias/fusión: Ahora también está trabajando en la mayoría de las plataformas (Windows/Linux/Mac) con la ventaja de forma nativa el apoyo a algunos control de origen como Git. Por lo tanto, puede tener alguna diferencia de historial en todos los archivos mucho más simple. La vista de fusión (vea screenshot) tiene solo 3 paneles, al igual que SourceGear Diff/Merge. Esto hace que la fusión sea algo más difícil en casos complejos.

PD: Si una herramienta un día admite 5 vistas fusionando, esto sería realmente increíble, porque si elige compromisos en Git realmente no tiene una base sino dos. Dos bases, dos cambios y una fusión resultante.

+6

Perforce Merge is great. Tiene una herramienta de combinación de 4 paneles, que realmente ayuda: el suyo, el suyo, base común, el nuevo 24 may. 112011-05-24 00:17:03

+2

P4 también es [usado por Google] (http://www.quora.com/What-version-control-system-does- Google-use-and-why). 02 ago. 112011-08-02 08:03:16

+3

Puede instalar solo P4Merge de forma personalizada sin el resto de forzosa. 10 may. 122012-05-10 22:19:44

+4

La última versión de p4merge no tiene la interfaz de "solo lectura". Puede editar el archivo fusionado en el panel inferior. 21 nov. 122012-11-21 01:13:41

  0

Esta es una gran respuesta y discusión. ¡Gracias por compartir! 17 mar. 152015-03-17 22:04:39


20

vimdiff

Una vez que haya aprendido vim (y en mi humilde opinión que debería), vimdiff es sólo uno más pequeño y hermoso concepto ortogonal a aprender. Para obtener ayuda en línea, en vim:

:help vimdiff 

Si está atrapado en la edad oscura de uso del ratón, y los archivos que está en la concentración no es muy grande, recomiendo MELD.

  0

<3 vimdiff, no puedo entender cómo convencer a svn para que me permita usarlo como una herramienta de 'fusión'. 20 ene. 112011-01-20 18:00:16

  0

gvimdiff también funciona bien para este propósito. 21 jul. 112011-07-21 11:19:50

+1

¡Usar el plugin Fugitive lo hace aún más fácil! http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ 20 ene. 152015-01-20 09:21:00


5

IntelliJ IDEA tiene un sofisticado merge conflict resolution tool con la varita mágica Resolve, lo que simplifica en gran medida la fusión:

Source: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


0

Si usted hace uso de Visual Studio, Team Explorer construido en herramienta es un muy buen herramienta para resolver conflictos de fusión de git.


0

Así que para el git merge, que puede probar:

  • DiffMerge a comparar visualmente y combinar archivos en Windows, OS X y Linux.

    DiffMerge

  • Meld, es una visual de diferencias y combinar herramienta.

    Meld is a visual diff and merge tool

  • KDiff3, un diff y programa de fusión), que se compara o se fusiona 2 o 3 de introducción de texto archivos/directorios.
  • opendiff (parte de Xcode Tools en macOS), una utilidad de línea de comandos que inicia la aplicación FileMerge desde el terminal para comparar archivos o directorios gráficamente, incluido merging.

1

He intentado muchas de las herramientas mencionadas aquí y ninguna de ellas ha sido lo que estoy buscando.

Personalmente, encontré que Atom es una gran herramienta para visualizar diferencias y resolver conflictos/fusionar.

En cuanto a la fusión, no hay tres vistas, pero está todo combinado en una con resaltado de color para cada versión. Puede editar el código directamente o hay botones para usar la versión de ese fragmento que desee.

Ni siquiera lo uso como editor o IDE, solo por trabajar con git. Limpia la interfaz de usuario y es muy sencillo, además es altamente personalizable.

  • Puede iniciarlo desde la línea de comandos y pasar en un solo archivo que desea abierto a, o añadir su carpeta de proyecto (git repo).

    • También recomendaría project-manager como una forma muy conveniente para navegar entre los proyectos sin ocupar apenas vista de árbol.
  • El único problema que he tenido es refrescante: cuando se trabaja con grandes repositorios, atom puede tardar en actualizar los cambios que realice fuera de él. Siempre cierro cuando termino, y luego lo vuelvo a abrir cuando quiero ver mis cambios/commit nuevamente. También puede volver a cargar la ventana con ctrl + shift + f5, que solo demora un segundo.

Y es gratis, por supuesto.


0

que utilizan diferentes herramientas para la mezcla y comparar:

git config --global diff.tool diffuse 
git config --global merge.tool kdiff3 

Puño podría ser llamado por:

git difftool [BRANCH] -- [FILE or DIR] 

segundo se llama cuando se utiliza git mergetool.