El comando Git diff en Git


Lección 19 / 53

El comando Git diff en Git

Git Guía Git Guía Git español

git diff es un comando Git multiuso que permite ver las diferencias entre dos data source, ya sean archivos, commit, branch u otros. En esta sección, veremos los usos más típicos de git diff y explicaremos el formato estándar en el que se muestran estas diferencias.

Aquí hay un ejemplo práctico usando un repositorio creado desde cero:

$ mkdir repo_for_diff
$ cd repo_for_diff
$ touch diff_test.txt
$ echo "this is a git diff test example" > diff_test.txt
$ git init
Initialized empty Git repository
$ git add diff_test.txt
$ git commit -m "add test file"
[master (root-commit) c5dfcdb] add test file
1 file changed, 1 insertion(+)
create mode 100644 diff_test.txt

Al ejecutar git diff, no habrá output, ya que no hay diferencia entre el contenido de la working copy y el último commit (snapshot). Así que intentemos cambiar el contenido del archivo rastreado en el repository:

$ echo "this is a diff example" > diff_test.txt
$ git diff
diff --git a/diff_test.txt b/diff_test.txt
index 6b0c6cf..b37e70a 100644
--- a/diff_test.txt
+++ b/diff_test.txt
@@ -1 +1 @@
-this is a git diff test example
+this is a diff example

¿Cómo leer este output?

  • la primera línea muestra los data source que el comando git diff ha usado, a/diff_test.txt b/diff_test.txt (en este caso el último snapshot del archivo es la versión en la working directory).
  • la segunda línea muestra los metadatos internos de Git, en general es una información que se puede ignorar.
  • la tercera y cuarta línea son la leyenda de los dos input de diff, se usa para leer la sección sucesiva.
  • las últimas líneas son el “chunk” (o la lista de los chunk para esos dos archivos) del diff, donde en la práctica solo se muestran las líneas cambiadas entre archivos (con la leyenda -/+ para indicar qué línea está presente en qué archivo); el chunk comienza con un head (la línea con @@, que indica un summary de los cambios, en este caso una línea cambiada)

P.D. En la vida real, un chunk head podría mostrar algo como @@ -34,6 +34,8 @@ que significa “a partir de la línea 34 del archivo, se han eliminado 6 filas y se han añadido 8

Opciones útiles:

git diff

Muestra la diferencia entre el contenido actual de la working area y el último commit

git diff --staged

Muestra la diferencia entre el contenido actual de la staging area y el último commit

git diff ./path/to/file`

Muestra las diferencias solo para el archivo indicado

$ git log --pretty=oneline
957fbc92b123030c389bf8b4b874522bdf2db72c add feature
ce489262a1ee34340440e55a0b99ea6918e19e7a rename some classes
6b539f280d8b0ec4874671bae9c6bed80b788006 refactor some code for feature
646e7863348a427e1ed9163a9a96fa759112f102 add some copy to body
$ git diff 957fbc92b123030c389bf8b4b874522bdf2db72c ce489262a1ee34340440e55a0b99ea6918e19e7a

Compara dos commit

git diff feature-branch..other-feature-branch

Realiza la comparación entre dos branch; en este caso, se comparan los últimos commits de las dos branch (tip) habiendo indicado el operador "doble punto" (existen otros "operadores punto" que permiten realizar diferentes diffs, por ejemplo con "..." el último commit se compara en común entre las dos branch y el tip del branch indicado a la derecha.

Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad