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

599

¿Cuál es la mejor herramienta para ver y editar una fusión en Git? Me gustaría obtener una vista de fusió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 dé un error).

Mi sistema operativo es Ubuntu.

andy
fuente
15
"Pero ahora no está permitido" sí, por eso odio el stackoverflow hoy en día. Es demasiado seco y aburrido sin esas preguntas.
István Ujj-Mészáros
17
¿Existe un sitio de intercambio de pila donde se permite este tipo de pregunta? Si no, debería haber ..
fzzylogic
16
Parece que es hora de un nuevo desbordamiento de pila donde se permiten tales preguntas. Claramente, como muchas personas declararon que tales preguntas son valiosas para tanta gente que es estúpido cerrarlas. Creo que te has pasado de la raya con la burocracia. ¿Qué tal si haces una encuesta sobre este tema y ves lo que quieren tus "clientes"? P
Piotr Owsiak
99
Hay softwarerecs.stackexchange.com
Philipp Wendler
66
El problema: softwarerecs es inútil porque los expertos están aquí, no allí.
reinierpost

Respuestas:

337

Meld es una herramienta de diferenciación / fusión gratuita, de código abierto y multiplataforma (UNIX / Linux, OSX, Windows).

Aquí se explica cómo instalarlo:

usuario20805
fuente
53
¿A quién le importa el sistema operativo que utiliza el autor original ?, la pregunta es lo suficientemente general como para interesar a 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
16
meldes tedioso con diferencias complejas, poder seleccionar opciones como chose b for all unresolved conflictses mucho mejor que tener que hacer clic manualmente en la flecha correcta para cada trozo 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 retroceder en nerges fallidos.
Mark Booth
3
@naxa Meld ahora tiene un instalador de Windows: code.google.com/p/meld-installer
Roman
66
kdiff3 le permite ver 4 vistas, meld solo permite 3 vistas. Meld no es una herramienta de fusión real, es una herramienta de diferencia ya que no muestra la vista de la versión base.
Akira Yamamoto
44
Meld es horrible, especialmente para las fusiones. No tiene la opción de "transferir automáticamente cambios no conflictivos", lo que hace que cada fusión sea terriblemente dolorosa.
Cerin
91

Puede configurar su propia herramienta de combinación para usarla 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 lo hace, también puede configurarlo como herramienta de control para " git difftool":

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

Tenga en cuenta que en Unix / Linux no desea $BASEque su shell lo analice como variable; en realidad debería aparecer en su archivo ~ / .gitconfig para que esto funcione.

Evgeny
fuente
10
Tenga en cuenta que dado que p4merge es (ahora) una de las herramientas de git mergetools compatibles oficialmente, no debería ser necesario manipular la herramienta. .cmd variable más.
Matt Ball
2
Asegúrese de estar utilizando la cita correcta: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck
64

Beyond Compare 3 , mi favorito, tiene unafuncionalidad de fusión en la edición Pro . Lo bueno de su fusión es que le permite ver las 4 vistas: base, izquierda, derecha y resultado combinado. Es algo menos visual que P4V pero mucho más que WinDiff. Se integra con muchos controles de fuente y funciona en Windows / Linux. Tiene muchas características como reglas avanzadas, ediciones, alineación manual ...

Perforce Visual Client ( P4V ) es una herramienta gratuita que proporciona una de las interfaces más explícitas para la fusión (ver algunas capturas de pantalla ). 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 que sea un poco difícil obtener su herramienta sin su cliente.

SourceGear Diff / Merge puede ser mi segunda opción de herramienta gratuita. Verifique que combine la captura de pantalla y verá que tiene las 3 vistas al menos.


Meld es una herramienta gratuita más nueva que preferiría SourceGear Diff / Merge : ahora también funciona en la mayoría de las plataformas (Windows / Linux / Mac) con la clara ventaja de admitir de forma nativa algún control de fuente como Git . Por lo tanto, puede tener un poco de historial de diferencias en todos los archivos mucho más simple. La vista de fusión (ver captura de pantalla ) 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 la fusión de 5 vistas , esto sería realmente increíble, porque si seleccionas las confirmaciones en Git, realmente no tienes una base, sino dos. Dos bases, dos cambios y una fusión resultante.

Wernight
fuente
77
Perforce Merge es genial. Tiene una herramienta de combinación de 4 paneles, que realmente ayuda: la suya, la suya, la base común, nuevo
Gal
44
P4 también es utilizado por Google .
Wernight
55
Puede instalar a medida solo P4Merge sin el resto de rendimiento.
Dirk Bester
66
La última versión de p4merge no tiene la interfaz de "solo lectura". Puede editar el archivo combinado en el panel inferior.
Ian Ni-Lewis
1
Esta es una gran respuesta y discusión. ¡Gracias por compartir!
Mark Good
45

Escucho cosas buenas sobre kdiff3.

kryger
fuente
44
+1: kdiff3 es muy superior a meld y también es compatible de forma nativa con git.
Mark Booth
3
kdiff3tiene muchas más funciones pero meldtiene una mejor interfaz de usuario. En mi opinión, meldes mejor para fusiones fáciles donde las características proporcionadas por meldson suficientes. Recuerde intentarlo diffusetambién.
Mikko Rantalainen
kdiff3 le permite ver 4 vistas, meld solo permite 3 vistas. Meld no es una herramienta de fusión real, es una herramienta de diferencia ya que no muestra la vista de la versión base.
Akira Yamamoto
43

Mi herramienta de combinación visual favorita es SourceGear DiffMerge

  • Es gratis.
  • Multiplataforma (Windows, OS X y Linux).
  • IU visual limpia
  • Todas las características diff que esperaría (Diff, Merge, Folder Diff).
  • Interfaz de línea de comando.
  • Atajos de teclado utilizables.

Interfaz de usuario

Luke
fuente
3
¿Cómo lo configuras para que funcione con git?
Ryan Lundy
2
¡Gracias por presentármelo! : D Esta herramienta está limpia y tardó menos tiempo en instalarse y trabajar que en combinar. Paso media hora intentando instalar meld. ¡Pero este lo hice en 5 minutos!
om39a
2
Nota: diffmerge no parece tener una función de combinación de 3 vías. Lo estoy abandonando después de probarlo durante un par de semanas por esa razón
StormeHawke
Es una buena herramienta y también puede comparar carpetas. El problema es un poco lento (MacBookPro 15 2014, MacOS Catalina)
emKaroly
33

vimdiff

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

:help vimdiff 

Esta pregunta cubre cómo usarlo: ¿Cómo uso vimdiff para resolver un conflicto?

ingrese la descripción de la imagen aquí

Si está atrapado en la edad oscura del uso del mouse y los archivos que está fusionando no son muy grandes, le recomiendo fusionar.

Andrew Wagner
fuente
<3 vimdiff, no puedo entender cómo convencer a svn para que me permita usarlo como una herramienta de 'fusión'.
klokop
gvimdiff también funciona bien para este propósito.
nuevo123456
2
¡Usar el complemento Fugitivo lo hace aún más fácil! vimcasts.org/episodes/…
Erik Westrup
Si solo hubiera una manera de ver claramente la diferencia entre local / base y base / remoto.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
24

Puedes probar P4Merge .

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

Las características incluyen:

  • Destacar y editar diferencias de archivos de texto
  • Elija incluir o ignorar finales de línea o espacios en blanco
  • Reconocer las convenciones de final de línea para Windows (CRLF), Mac (CR) y Unix (LF)
  • Use parámetros de línea de comandos e inicie desde aplicaciones que no sean de Perforce
  • Mostrar números de línea al comparar y fusionar archivos
  • Excluir archivos modificados, únicos o sin cambios.
  • Filtrar archivos por nombre o extensión
  • Organice los activos modificados en una jerarquía familiar de archivos / carpetas
  • Compare JPEG, GIF, TIFF, BMP y otros formatos de archivo
  • Extienda usando la API Qt
  • Superposición de imágenes o visualización de lado a lado
  • Destaque las diferencias en las imágenes superpuestas
Ron
fuente
El mejor que he visto hasta ahora. resuelva fácilmente los conflictos eligiendo el cambio de la lista de la vista
tripartita
Nuevo enlace: perforce.com/downloads/helix#product-10
Brill Pappin
Corrige el enlace perforce.com/downloads/helix#clients
Al-Mothafar
Comencé a usarlo hoy y es bastante intuitivo.
Recurso
22

IntelliJ IDEA tiene una herramienta sofisticada de resolución de conflictos de fusión con la varita mágica Resolve, que simplifica enormemente la fusión:

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

niutech
fuente
2
La herramienta de fusión de Idea es simplemente brillante. incluso está disponible en la edición comunitaria de Idea, lo que significa que puede usarlo de forma gratuita como herramienta de fusión avanzada: esto es lo que estoy haciendo (en la mayoría de los casos, uso VSCode donde estoy trabajando y uso Idea para casos de fusión difíciles). VSCode también hace un trabajo bastante bueno, y a veces incluso mejor que Idea. pero para los casos difíciles de su 3-paneles-diseño es la mejor herramienta que he visto
godblessstrawberry
¡Odio cómo la barra de desplazamiento 'archivo de verano' NO está junta! ¡La razón principal por la que me gusta difusa!
Anthony
16

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

$ diffuse "mine" "output" "theirs"

Diffuse es una herramienta de combinación de texto pequeña y simple escrita en Python. Con Diffuse, puede combinar, editar y revisar fácilmente los cambios en su código. Diffuse es software libre.

kenorb
fuente
2
Realmente me gusta difuso, y no soy parcial.
jturcotte
2
@Derrick Moser: se diffuseve muy bien. Lo probé ahora y funcionó mejor kdiff3. Pero, estoy tratando de usarlo git mergetooly abre 4 archivos uno al lado del otro (local, resultado de fusión, remoto, base), y mi pantalla no es lo suficientemente amplia para eso. Tuve que hacer muchos desplazamientos horizontales. kdiff3 solo muestra 3 uno al lado del otro y el resultado en la mitad inferior de la ventana.
yairchu
diffuse tiene algunas opciones de fusión adicionales en comparación con meld (permite unir ambas versiones en lugar de elegir una de ellas).
Audrius Meskauskas
diffuse funciona de fábrica en Windows, para comparar 2 carpetas, con CVS repo, con Git repo, fusionando git merge conflictos. Los archivos diff difusos se abren en pestañas en una sola ventana. Cambié a difuso (después de haber usado el ediff de emacs (demasiadas características, útiles en los 90)> vimdiff (complejas pulsaciones de teclas de complementos)> p4merge> araxis (propiedad)> meld (demasiado lento), tkdiff (solo cvs)> kdiff3 (bueno , regex bueno ignora características)> winmerge (bueno)> difuso (rápido, portátil, funciona como se esperaba)) la primera vez que probé difuso.
mosh
¿Cómo cambiar el idioma de la GUI en Diffuse?
zach
9

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

usuario35149
fuente
6

Entonces, para la fusión de git, puedes probar:

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

    DiffMerge

  • Meld , es una herramienta de combinación y diferencia visual.

    Meld es una herramienta de combinación y diferencia visual

  • KDiff3 , un programa de diferencias y fusión), que compara o combina 2 o 3 archivos / directorios de entrada de texto.
  • opendiff(parte de Xcode Tools en macOS), una utilidad de línea de comandos que inicia la aplicación FileMerge desde Terminal para comparar gráficamente archivos o directorios, incluida la fusión .
kenorb
fuente
2
git config --global merge.tool opendifffuncionó mejor para mí
James Matthew Mudgett
5

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

Personalmente, he encontrado que Atom es una gran herramienta para visualizar las diferencias y la resolución / fusión de conflictos.

En cuanto a la fusión, no hay tres vistas, pero todo se combina en uno 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.

Ya ni siquiera lo uso como editor o IDE, solo para trabajar con git. Interfaz de usuario limpia y muy sencilla, además es altamente personalizable.

  • Puede iniciarlo desde la línea de comandos y pasar un solo archivo al que desea abrir, o agregar su carpeta de proyecto (git repo).

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

Y es gratis, por supuesto.

Sean McCallum
fuente
3

Utilizo diferentes herramientas para fusionar 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]

El segundo se llama cuando lo usas git mergetool.

efemérides
fuente
2

Si usa Visual Studio , la herramienta incorporada de Team Explorer es una herramienta muy buena para resolver conflictos de fusión de git.

Charith
fuente
0

gitx http://gitx.frim.nl/

Algunos errores cuando se trabaja con conjuntos de confirmación grandes, pero son excelentes para examinar los cambios y elegir diferentes cambios en el escenario y luego confirmar.

Blake Lucchesi
fuente