Tutorial de Git - diff para comparar diferencias
- Comprobar las diferencias entre la copia de trabajo y el repositorio
- Herramientas externas Git diff
- Comprobar las diferencias entre el área de preparación y el repositorio
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 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
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