Editor o herramienta que muestra las versiones de git una al lado de la otra

Estoy buscando cualquier editor o herramienta que pueda ver una al lado de la otra dos versiones diferentes del archivo en un repositorio de git.

Hay una funcionalidad similar en github , pero solo compara la versión seleccionada con la anterior y me gustaría que fuera más flexible (por ejemplo, comparar dos versiones cualesquiera del archivo).

Captura de pantalla de ejemplo

¿Supongo que quieres una interfaz GUI?
@Tom, sí, me gustaría ver los cambios resaltados, pero si hay una solución de línea de recomendación que es (a) fácil de usar, (b) devuelve una salida con formato claro, entonces, ¿por qué no...?

Respuestas (2)

Al leer su último comentario en el momento de escribir este artículo, puede hacerlo fácilmente con la herramienta de línea de comandos llamada Cdiff. Su uso es bastante simple y funciona con Git, Mercurial y SVN. Está escrito en Python, por lo que funciona muy bien en Linux.

CDiff (código abierto)

Herramienta basada en términos para ver diferencias incrementales coloreadas en un espacio de trabajo de Git/Mercurial/Svn o desde stdin, con soporte lado a lado y buscapersonas automático. Requiere python (>= 2.5.0) y menos.

git log -p -2 | cdiff       # view git log with changes of last 2 commits
git show 15bfa | cdiff -s   # view a given git commit, side by side

captura de pantalla

Git en realidad tiene un comando dedicado para este propósito: git difftool. Abrirá cualquier editor adecuado, dependiendo de la configuración; en mi configuración (y, creo, por defecto) esto es vimdiff :

$ git config --global diff.tool
vimdiff

Esto debería estar disponible en cualquier sistema Unix típico. No se ve exactamente hermoso (más bien demasiado colorido), pero hace lo que quieres.

Captura de pantalla de vimdiff invocado desde git

Y debido a que es esencialmente solo un modo especial de vim, también se puede usar muy bien para editar conjuntos de cambios. Por ejemplo, cuando simplemente se ejecuta git difftool, la vista de la derecha es en realidad el archivo en el directorio de trabajo. ¡Entonces puede modificar fácilmente cualquier cambio directamente en este editor, antes de confirmarlos! (Sin embargo, de manera predeterminada, abrirá ambos archivos en modo de lectura abierta, por lo que en realidad debe :w!guardar los cambios realizados en vimdiff).

Ah, y: para salir de este editor, escriba :qa. Aquí, :es el prefijo vi estándar para los comandos ed, qes el comando para cerrar ( abandonar ) un archivo, y el asufijo lo aplica a todos los archivos abiertos.