Tutorial de Git - diff para comparar diferencias

Jinku Hu 30 enero 2023
  1. Comprobar las diferencias entre la copia de trabajo y el repositorio
  2. Herramientas externas Git diff
  3. Comprobar las diferencias entre el área de preparación y el repositorio
Tutorial de Git - diff para comparar diferencias

Le mostraremos cómo ver los cambios o diferencias entre su copia de trabajo, que son los ficheros en los que está trabajando en los ficheros principales, y el repositorio. En la segunda parte, demostraremos cómo comparar entre el área de preparación y el repositorio.

Comprobar las diferencias entre la copia de trabajo y el repositorio

Una vez que hemos guardado un fichero, este fichero en una copia de trabajo es diferente del que está en nuestro repositorio. ¿Pero cómo vemos exactamente estos cambios? Porque a veces hacemos algunos cambios en un fichero y queremos ver el que está en el repositorio, y esto ocurre mucho siempre que estás trabajando con código porque quieres saber exactamente los cambios que estás haciendo y cómo va a afectar esto al proyecto principal.

Así que lo primero que podemos hacer es comprobar el git status y verás que un archivo está modificado, lo que significa que es diferente del del proyecto principal o del repositorio principal. Si escribes git diff y pulsas enter, te va a mostrar las diferencias.

$ git diff
diff --git a/test1.txt b/test1.txt
index e1dd8e3..448ad04 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,2 +1,2 @@
-This is my first Git repository.
-New added text.
\ No newline at end of file
+This was my first Git repository.
+This line is updated.
\ No newline at end of file

El texto rojo en el bash de git muestra lo que hay en el repositorio, y el verde indica cómo se modifica el texto.

Si tienes más archivos actualizados después de el último commit, Git mostrará las diferencias de los archivos uno a uno.

Herramientas externas Git diff

Si no te has acostumbrado a la herramienta diff por defecto de git, puedes configurar la difftool a la que prefieras.

Te mostraremos cómo configurar kdiff3 como la herramienta diff, merge de Git.

Cambia el directorio de archivos .gitconfig

En el sistema operativo Windows, abre el archivo .gitconfig en el directorio C:\Users\username y añade el texto al archivo,

[diff]
    tool = kdiff3
[difftool "kdiff3"]
    path = "C:/Program Files/KDiff3/kdiff3.exe"
    trustExitCode = false
[difftool]
    prompt = false
[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = "C:/Program Files/KDiff3/kdiff3.exe"
    trustExitCode = false
[mergetool]
    keepBackup = false

Aquí, path es la ruta instalada de kdiff3, y podría ser diferente en tu lado.

Configurar difftool mediante git bash

Puedes configurar la difftool o la mergetool usando el comando en git bash, también.

git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add mergetool.kdiff3.trustExitCode false

git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add difftool.kdiff3.trustExitCode false
git config --global --add difftool.prompt false

Ha hecho básicamente lo mismo que modificar el contenido del archivo .gitconfig.

Comprobar las diferencias entre el área de preparación y el repositorio

Puede utilizar el comando git difftool para revisar la diferencia entre el fichero de su copia de trabajo y el del repositorio.

Git Difftool-kdiff3

git diff muestra la diferencia entre la copia de trabajo y el repositorio, y después de que el fichero ya esté añadido al área de preparación, git diff no mostrará ninguna diferencia de este fichero porque no compara el área de preparación con el repositorio, por lo que parece que todo está actualizado, aunque este fichero todavía es diferente al de su repositorio.

El comando correcto para comparar el área de preparación es y el repositorio es añadir la opción --staged detrás de git diff.

$ git diff --staged
diff --git a/test1.txt b/test1.txt
index e1dd8e3..448ad04 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,2 +1,2 @@
-This is my first Git repository.
-New added text.
\ No newline at end of file
+This was my first Git repository.
+This line is updated.
\ No newline at end of file
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook