Visor de diff
Pega la salida de git diff, git show o diff -u, o abre un archivo .diff o .patch, y léelo como en una revisión de código: archivos listados a la izquierda, cambios lado a lado o en línea, con las palabras exactas que cambiaron resaltadas.
Última actualización:
Cómo usar Visor de diff
- Obtén un diff: ejecuta
git diff,git show <commit>odiff -u old new, o descarga un archivo .patch o .diff de una pull request. - Pégalo en el cuadro o haz clic en Abrir .diff / .patch. El visor se actualiza en cuanto lo pegas.
- Elige una vista: Lado a lado para revisar cambios, En línea para pantallas estrechas o líneas largas.
- Navega con la lista de archivos de la izquierda; escribe en el cuadro de filtro para encontrar un archivo rápidamente.
- Contrae los archivos que ya hayas revisado, o desactiva el ajuste de línea para ver las líneas largas sin cortes.
Anatomía de un git diff
| Línea | Significado |
|---|---|
diff --git a/src/app.js b/src/app.js | Inicio de un archivo en un git diff, con las rutas antigua (a/) y nueva (b/) |
new file mode 100644 / deleted file mode | El archivo se creó o se eliminó (100644 es un archivo normal, 100755 un ejecutable) |
similarity index 92%, rename from / rename to | Git detectó un cambio de nombre; el porcentaje indica cuánto contenido se mantuvo igual |
index 3f2a9c1..8b17d04 100644 | Hashes abreviados de los blobs del contenido antiguo y nuevo del archivo |
--- a/src/app.js / +++ b/src/app.js | Nombres de archivo antiguo y nuevo; /dev/null significa que el archivo no existía |
@@ -12,7 +12,9 @@ function load() | Encabezado del bloque: inicio y número de líneas antiguos, inicio y número nuevos, y contexto opcional |
unchanged line | Línea de contexto (empieza con un espacio), presente en ambas versiones |
-removed line | Solo en la versión antigua |
+added line | Solo en la versión nueva |
\ No newline at end of file | La línea anterior es la última y no tiene salto de línea final |
Binary files a/x.png and b/x.png differ | Cambió un archivo binario; no es posible un diff línea a línea |
Comandos útiles para generar diffs
| Comando | Muestra |
|---|---|
git diff | Cambios sin preparar en tu árbol de trabajo |
git diff --staged | Cambios preparados para el próximo commit |
git diff main...feature | Lo que cambió una rama desde que se separó de main (como una pull request) |
git show <commit> | El mensaje y el diff de un commit |
git format-patch -3 | Los tres últimos commits como archivos .patch de estilo correo |
git diff -U10 | Diff con 10 líneas de contexto en lugar de las 3 predeterminadas |
git diff -M | Detecta archivos renombrados (activado por defecto en versiones recientes de git) |
diff -u old.txt new.txt | Diff unificado de dos archivos sin git |
diff -ruN dirA dirB | Diff unificado recursivo de dos carpetas, incluidos los archivos nuevos |
Consejos para revisar un parche
- Empieza por el resumen y la lista de archivos: un gran número de eliminaciones en un archivo inesperado suele ser la primera señal de un error.
- El resaltado por palabra hace que destaquen los cambios pequeños, como un número, un operador o un nombre de variable cambiado dentro de una línea por lo demás idéntica.
- Los archivos renombrados sin cambios de contenido solo muestran una nota, para que los movimientos no oculten cambios reales.
- Si los cambios solo de espacios en blanco dificultan la revisión, vuelve a generar el diff con
git diff -wpara ignorarlos. - Para aplicar un parche que hayas revisado, usa
git apply changes.diff(árbol de trabajo) ogit am file.patch(commits de format-patch).
Preguntas frecuentes
¿Qué es un diff unificado?
Un diff unificado es el formato de texto estándar para describir los cambios entre dos versiones de archivos. Cada archivo empieza con las líneas --- (ruta antigua) y +++ (ruta nueva), seguidas de bloques (hunks) que comienzan con un encabezado como @@ -12,7 +12,9 @@. Dentro de un bloque, las líneas que empiezan con un espacio son contexto sin cambios, - marca las líneas eliminadas y + las añadidas. git diff, diff -u y la mayoría de las herramientas de revisión de código usan este formato.
¿Cómo leo la línea @@ -12,7 +12,9 @@?
Es el encabezado del bloque. -12,7 significa que el bloque abarca 7 líneas a partir de la línea 12 del archivo antiguo, y +12,9 significa 9 líneas a partir de la línea 12 del archivo nuevo. El texto que aparece después del segundo @@ es una pista sobre la función o sección que lo rodea. Este visor convierte esos números en números de línea reales junto a cada línea.
¿Cómo creo un archivo diff con git?
Ejecuta git diff > changes.diff para los cambios sin confirmar, git diff main...feature > feature.diff para una rama, o git format-patch -1 HEAD para guardar el último commit como archivo .patch. En GitHub también puedes añadir .diff o .patch al final de la URL de una pull request o de un commit para descargarlo.
¿Qué significa "No newline at end of file"?
El marcador \ No newline at end of file indica que la línea de arriba es la última del archivo y no tiene salto de línea después. Suele aparecer cuando un editor añade o quita el salto de línea final, lo que se muestra como un cambio en la última línea aunque no haya cambiado ningún texto visible.
¿Qué diferencia hay entre la vista lado a lado y la vista en línea?
Lado a lado coloca la versión antigua a la izquierda y la nueva a la derecha, alineando las líneas eliminadas y añadidas para que puedas compararlas directamente. En línea (también llamada unificada) muestra las líneas eliminadas en rojo seguidas de las añadidas en verde en una sola columna, lo que funciona mejor en pantallas pequeñas y con líneas muy largas.
¿Puede comparar dos archivos que no están en formato diff?
Esta herramienta muestra un diff ya existente. Para comparar dos textos o fragmentos de código que pegues por separado, usa el Comparador de código, que calcula las diferencias por ti y luego puede mostrarlas de la misma forma.
¿Se sube mi código?
No. El diff se analiza y se muestra con JavaScript en tu navegador. No se envía nada a ningún servidor, así que es seguro ver parches de repositorios privados.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.