Buscar..
Sintaxis
-
git diff [options] [<commit>] [--] [<path>…]
-
git diff [options] --cached [<commit>] [--] [<path>…]
-
git diff [options] <commit> <commit> [--] [<path>…]
-
git diff [options] <blob> <blob>
-
git diff [options] [--no-index] [--] <path> <path>
Parámetros
Parámetro | Detalles |
---|---|
-p, -u, --patch | Generar parche |
-s, --no-parche | Suprimir salida dif. Útil para comandos como git show que muestra el parche de forma predeterminada, o para cancelar el efecto de --patch |
--crudo | Generar la diferencia en formato crudo. |
--diff-algorithm = | Elija un algoritmo de diferencias. Las variantes son las siguientes: myers , minimal , patience , histogram |
--resumen | Genere un resumen condensado de la información del encabezado extendido, como creaciones, cambios de nombre y cambios de modo |
- solo-nombre | Mostrar solo nombres de archivos modificados |
--nombre-estado | Mostrar nombres y estados de archivos modificados Los estados más comunes son M (Modificado), A (Agregado) y D (Eliminado) |
--comprobar | Avisar si los cambios introducen marcadores de conflicto o errores de espacios en blanco. Lo que se considera errores de espacios en blanco se controla mediante la configuración de core.whitespace . De forma predeterminada, los espacios en blanco al final (incluidas las líneas que consisten únicamente en espacios en blanco) y un carácter de espacio seguido inmediatamente por un carácter de tabulación dentro de la sangría inicial de la línea se consideran errores de espacio en blanco. Sale con un estado distinto de cero si se encuentran problemas. No es compatible con --exit-code |
--full-index | En lugar del primer puñado de caracteres, muestre los nombres completos de los objetos blob anteriores y posteriores a la imagen en la línea "índice" al generar la salida del formato de parche |
--binario | Además de --full-index , --full-index una diferencia binaria que se puede aplicar con git apply |
-un texto | Tratar todos los archivos como texto. |
--color | Establecer el modo de color; es decir, use --color=always si desea canalizar un diferencial a menos y mantener el colorido de Git |
Mostrar diferencias en la rama de trabajo.
git diff
Esto mostrará los unstaged cambios en la rama actual de la confirmación antes de ella. Solo mostrará los cambios relacionados con el índice, lo que significa que muestra lo que podría agregar a la próxima confirmación, pero no lo hizo. Para agregar (poner en escena) estos cambios, puede usar git add
.
Si un archivo está en escena, pero se modificó después de que se almacenó, git diff
mostrará las diferencias entre el archivo actual y la versión por etapas.
Mostrar diferencias para archivos en etapas
git diff --staged
Esto mostrará los cambios entre la confirmación anterior y los archivos almacenados actualmente.
NOTA: También puedes usar los siguientes comandos para lograr lo mismo:
git diff --cached
Que es solo un sinónimo para --staged
o
git status -v
Lo que activará la configuración detallada del comando de status
.
Mostrar los cambios en etapas y no en etapas
Para mostrar todos los cambios en etapas y sin etapas, use:
git diff HEAD
NOTA: También puedes usar el siguiente comando:
git status -vv
La diferencia es que la salida de este último realmente le dirá qué cambios se organizan para el compromiso y cuáles no.
Mostrar cambios entre dos confirmaciones
git diff 1234abc..6789def # old new
Ej .: Mostrar los cambios realizados en las últimas 3 confirmaciones:
git diff @~3..@ # HEAD -3 HEAD
Nota: los dos puntos (..) son opcionales, pero agregan claridad.
Esto mostrará la diferencia textual entre las confirmaciones, independientemente de dónde se encuentren en el árbol.
Usando meld para ver todas las modificaciones en el directorio de trabajo.
git difftool -t meld --dir-diff
mostrará los cambios de directorio de trabajo. Alternativamente,
git difftool -t meld --dir-diff [COMMIT_A] [COMMIT_B]
Mostrará las diferencias entre 2 confirmaciones específicas.
Mostrar diferencias para un archivo o directorio específico
git diff myfile.txt
Muestra los cambios entre la confirmación previa del archivo especificado ( myfile.txt
) y la versión modificada localmente que aún no se ha preparado.
Esto también funciona para directorios:
git diff documentation
Lo anterior muestra los cambios entre la confirmación previa de todos los archivos en el directorio especificado ( documentation/
) y las versiones modificadas localmente de estos archivos, que aún no se han almacenado.
Para mostrar la diferencia entre alguna versión de un archivo en un compromiso dado y la versión HEAD
local, puede especificar el compromiso con el que desea comparar:
git diff 27fa75e myfile.txt
O si quieres ver la versión entre dos confirmaciones separadas:
git diff 27fa75e ada9b57 myfile.txt
Para mostrar la diferencia entre la versión especificada por el hash ada9b57
y la última confirmación en la rama my_branchname
solo para el directorio relativo llamado my_changed_directory/
puede hacer esto:
git diff ada9b57 my_branchname my_changed_directory/
Viendo un word-diff para líneas largas
git diff [HEAD|--staged...] --word-diff
En lugar de mostrar las líneas cambiadas, esto mostrará las diferencias dentro de las líneas. Por ejemplo, en lugar de:
-Hello world
+Hello world!
Cuando toda la línea está marcada como cambiada, word-diff
altera la salida a:
Hello [-world-]{+world!+}
Puede omitir los marcadores [-
, -]
, {+
, +}
especificando --word-diff=color
o --color-words
. Esto solo usará codificación de colores para marcar la diferencia:
Viendo una combinación de tres vías incluyendo el ancestro común
git config --global merge.conflictstyle diff3
Establece el estilo diff3
como predeterminado: en lugar del formato habitual en las secciones en conflicto, mostrando los dos archivos:
<<<<<<< HEAD
left
=======
right
>>>>>>> master
Incluirá una sección adicional que contiene el texto original (que viene del ancestro común):
<<<<<<< HEAD
first
second
|||||||
first
=======
last
>>>>>>> master
Este formato facilita la comprensión del conflicto de combinación, es decir, en este caso, se ha agregado el second
localmente, mientras que el remoto se cambió first
al last
, resolviéndose a:
last
second
La misma resolución hubiera sido mucho más difícil utilizando el valor predeterminado:
<<<<<<< HEAD
first
second
=======
last
>>>>>>> master
Mostrar diferencias entre la versión actual y la última versión.
git diff HEAD^ HEAD
Esto mostrará los cambios entre la confirmación anterior y la confirmación actual.
Difunde texto codificado en UTF-16 y archivos plist binarios
Puede diferenciar archivos codificados en UTF-16 (los ejemplos de cadenas de localización de iOS y macOS son ejemplos) especificando cómo git debe diferenciar estos archivos.
Agregue lo siguiente a su archivo ~/.gitconfig
.
[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"
iconv
es un programa para convertir diferentes codificaciones .
Luego edite o cree un archivo .gitattributes
en la raíz del repositorio donde desea usarlo. O simplemente editar ~/.gitattributes
.
*.strings diff=utf16
Esto convertirá todos los archivos que terminan en .strings
antes de git diffs.
Puede hacer cosas similares para otros archivos, que se pueden convertir en texto.
Para archivos binarios de plist editas .gitconfig
[diff "plist"]
textconv = plutil -convert xml1 -o -
y .gitattributes
*.plist diff=plist
Comparando ramas
Mostrar los cambios entre la punta de la new
y la punta del original
:
git diff original new # equivalent to original..new
Mostrar todos los cambios en new
desde que se bifurcó desde el original
:
git diff original...new # equivalent to $(git merge-base original new)..new
Usando solo un parámetro como
git diff original
es equivalente a
git diff original..HEAD
Mostrar cambios entre dos ramas
git diff branch1..branch2
Producir un parche compatible con el parche.
A veces solo necesitas un diff para aplicar el parche. El git --diff
regular git --diff
no funciona. Intenta esto en su lugar:
git diff --no-prefix > some_file.patch
Entonces en otro lugar puedes revertirlo:
patch -p0 < some_file.patch
diferencia entre dos commit o rama
Para ver la diferencia entre dos ramas
git diff <branch1>..<branch2>
Para ver la diferencia entre dos ramas
git diff <commitId1>..<commitId2>
Para ver dif con rama actual
git diff <branch/commitId>
Ver resumen de cambios.
git diff --stat <branch/commitId>
Para ver los archivos que cambiaron después de un cierto compromiso
git diff --name-only <commitId>
Para ver archivos que son diferentes a una rama
git diff --name-only <branchName>
Para ver los archivos que cambiaron en una carpeta después de un determinado compromiso
git diff --name-only <commitId> <folder_path>