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).
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
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.
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, q
es el comando para cerrar ( abandonar ) un archivo, y el a
sufijo lo aplica a todos los archivos abiertos.
Tomás
Tim