2008-09-26 21 views
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".¿Cuál es la mejor herramienta de combinación visual para Git?

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? – Luke

+2

Usar kdiff3 con "git mergetool" debería funcionar bien. No he tenido problemas con eso. – Zitrax

+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'. –

Respuesta

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. – Luke

+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. – user20805

+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 – Evgeny

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? –

+2

@Kyralessa Vea http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program – Luke

+0

Nota, descarga gratuita. –

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. –

+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. –

+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. –

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. – jturcotte

+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. – yairchu

+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). – h22

-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? – knoopx

+4

No disponible en Ubuntu – analogue

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 – chovy

+0

Nuevo enlace: https://www.perforce.com/downloads/helix#product-10 –

+0

Repara el enlace https://www.perforce.com/ downloads/helix # clients –

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í. – Benjol

+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. –

+1

Asegúrese de estar utilizando la cita correcta: http://stackoverflow.com/a/1217994/3543437 –

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 – Gal

+2

P4 también es [usado por Google] (http://www.quora.com/What-version-control-system-does- Google-use-and-why). – Wernight

+3

Puede instalar solo P4Merge de forma personalizada sin el resto de forzosa. –

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'. – klokop

+0

gvimdiff también funciona bien para este propósito. – new123456

+1

¡Usar el plugin Fugitive lo hace aún más fácil! http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ –

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.

Cuestiones relacionadas