InglésFrancésEspañol

Ad


icono de página de OnWorks

git-diff: en línea en la nube

Ejecute git-diff en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando git-diff que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


git-diff: muestra los cambios entre confirmaciones, confirmaciones y árbol de trabajo, etc.

SINOPSIS


git diff [opciones] [ ] [-] [ ...]
git diff [opciones] --cached [ ] [-] [ ...]
git diff [opciones] [-] [ ...]
git diff [opciones]
git diff [opciones] [--no-index] [-]

DESCRIPCIÓN


Mostrar cambios entre el árbol de trabajo y el índice o un árbol, cambios entre el índice
y un árbol, cambios entre dos árboles, cambios entre dos objetos blob o cambios
entre dos archivos en el disco.

git diff [--opciones] [-] [ ...]
Este formulario es para ver los cambios que realizó en relación con el índice (área de preparación para el
siguiente compromiso). En otras palabras, las diferencias son lo que podría dile a Git que siga
agregar al índice pero aún no lo ha hecho. Puede organizar estos cambios utilizando git-
add(1).

git diff --no-index [--opciones] [-] [ ...]
Este formulario es para comparar las dos rutas dadas en el sistema de archivos. Puede omitir el
Opción --no-index cuando se ejecuta el comando en un árbol de trabajo controlado por Git y en
al menos una de las rutas apunta fuera del árbol de trabajo, o al ejecutar el comando
fuera de un árbol de trabajo controlado por Git.

git diff [--opciones] --cached [ ] [-] [ ...]
Este formulario es para ver los cambios que realizó para la próxima confirmación en relación con el nombre
. Por lo general, querrá una comparación con la última confirmación, por lo que si no lo hace
dar , por defecto es HEAD. Si HEAD no existe (por ejemplo, ramas no nacidas) y
no se da, muestra todos los cambios por etapas. --staged es sinónimo de --cached.

git diff [--opciones] [-] [ ...]
Este formulario es para ver los cambios que tiene en su árbol de trabajo en relación con el nombre
. Puede usar HEAD para compararlo con la última confirmación o un nombre de rama para
compárelo con la punta de una rama diferente.

git diff [--opciones] [-] [ ...]
Esto es para ver los cambios entre dos .

git diff [--opciones] .. [-] [ ...]
Esto es sinónimo de la forma anterior. Si en un lado se omite, será
tienen el mismo efecto que usar HEAD en su lugar.

git diff [--opciones] ... [-] [ ...]
Este formulario es para ver los cambios en la rama que contiene y hasta el segundo
, partiendo de un antepasado común de ambos . "git diff A ... B" es
equivalente a "git diff $ (git-merge-base AB) B". Puede omitir cualquiera de ,
que tiene el mismo efecto que usar HEAD en su lugar.

En caso de que esté haciendo algo exótico, debe tener en cuenta que todos los
en la descripción anterior, excepto en los dos últimos formularios que utilizan anotaciones "..",
puede ser cualquiera .

Para obtener una lista más completa de formas de deletrear , consulte la sección "ESPECIFICACIÓN DE REVISIONES" en
gitrevisiones(7). Sin embargo, "diff" se trata de comparar dos criterios de valoración, no rangos, y el
notaciones de rango (" .. " y " ... ") no se refieren a un rango como
definido en la sección "ESPECIFICAR RANGOS" en gitrevisiones(7).

git diff [opciones]
Este formulario es para ver las diferencias entre el contenido sin formato de dos objetos blob.

CAMPUS


-p, -u, --parche
Genere parche (consulte la sección sobre generación de parches). Este es el predeterminado.

-s, --no-parche
Suprime la salida de diferencias. Útil para comandos como git show que muestran el parche por
predeterminado, o para cancelar el efecto de --patch.

-U , --unificado =
Generar diferencias con líneas de contexto en lugar de las tres habituales. Implica -p.

--crudo
Genere la diferencia en formato raw.

--parche-con-crudo
Sinónimo de -p --raw.

--mínimo
Dedique más tiempo para asegurarse de que se produzca la diferencia más pequeña posible.

--paciencia
Genere una diferencia utilizando el algoritmo "diferencia de paciencia".

--histograma
Genere una diferencia usando el algoritmo "histogram diff".

--diff-algorítm = {paciencia | mínimo | histograma | myers}
Elija un algoritmo de diferencias. Las variantes son las siguientes:

por defecto, myers
El algoritmo básico de diferencias codiciosas. Actualmente, este es el predeterminado.

mínimo
Dedique más tiempo para asegurarse de que se produzca la diferencia más pequeña posible.

paciencia
Utilice el algoritmo "paciencia diff" al generar parches.

histograma
Este algoritmo amplía el algoritmo de paciencia para "admitir errores comunes de baja ocurrencia
elementos".

Por ejemplo, si configuró la variable diff.algorithm en un valor no predeterminado y
desea usar el predeterminado, entonces debe usar la opción --diff-algorítm = default.

--stat [= [, [, ]]]
Genere un diffstat. De forma predeterminada, se utilizará tanto espacio como sea necesario para la
la parte del nombre de archivo y el resto para la parte del gráfico. El ancho máximo predeterminado es el terminal
ancho, u 80 columnas si no está conectado a un terminal, y puede ser anulado por .
El ancho de la parte del nombre del archivo se puede limitar dando otro ancho
después de una coma. El ancho de la parte del gráfico se puede limitar usando
--stat-graph-width = (afecta a todos los comandos que generan un gráfico estadístico) o por
configuración diff.statGraphWidth = (no afecta a git format-patch). Dando un
tercer parámetro , puede limitar la salida a la primera líneas seguidas
por ... si hay más.

Estos parámetros también se pueden configurar individualmente con --stat-width = ,
--stat-name-width = y --stat-count = .

--numstat
Similar a --stat, pero muestra el número de líneas agregadas y eliminadas en notación decimal y
nombre de ruta sin abreviatura, para hacerlo más amigable con la máquina. Para archivos binarios,
salidas dos - en lugar de decir 0 0.

--shortstat
Muestra solo la última línea del formato --stat que contiene el número total de modificaciones
archivos, así como el número de líneas agregadas y eliminadas.

--dirstat [= ]
Genere la distribución de la cantidad relativa de cambios para cada subdirectorio. los
El comportamiento de --dirstat se puede personalizar pasándole una lista separada por comas de
parámetros. Los valores predeterminados están controlados por la variable de configuración diff.dirstat
(consulta: git-config(1)). Están disponibles los siguientes parámetros:

cambios
Calcule los números de dirstat contando las líneas que se han eliminado del
origen o agregado al destino. Esto ignora la cantidad de código puro
movimientos dentro de un archivo. En otras palabras, reorganizar líneas en un archivo no es
contados tanto como otros cambios. Este es el comportamiento predeterminado cuando no hay parámetro
es dado.

líneas
Calcule los números de dirstat haciendo el análisis de diferencias regular basado en líneas, y
sumando los recuentos de líneas eliminadas / agregadas. (Para archivos binarios, cuente fragmentos de 64 bytes
en cambio, dado que los archivos binarios no tienen un concepto natural de líneas). Esta es una mas
costoso: comportamiento indirecto que el comportamiento de cambios, pero cuenta
líneas reorganizadas dentro de un archivo tanto como otros cambios. La salida resultante es
coherente con lo que obtiene de las otras - * opciones estadísticas.

archivos
Calcule los números de dirstat contando el número de archivos modificados. Cada uno cambió
El archivo cuenta por igual en el análisis de dirstat. Este es el computacionalmente más barato
- comportamiento de dirstat, ya que no tiene que mirar el contenido del archivo en absoluto.

acumulativo
Cuente también los cambios en un directorio secundario para el directorio principal. Tenga en cuenta que
cuando se usa acumulativo, la suma de los porcentajes reportados puede exceder el 100%. los
El comportamiento predeterminado (no acumulativo) se puede especificar con el parámetro no acumulativo.
parámetro.


Un parámetro entero especifica un porcentaje de corte (3% por defecto). Directorios
que contribuyen con menos de este porcentaje de los cambios no se muestran en la salida.

Ejemplo: lo siguiente contará los archivos modificados, mientras ignora los directorios con menos
más del 10% de la cantidad total de archivos modificados y la acumulación de recuentos de directorios secundarios
en los directorios principales: --dirstat = files, 10, acumulativo.

--resumen
Genere un resumen condensado de información extendida del encabezado, como creaciones, cambios de nombre
y cambios de modo.

--parche-con-estadística
Sinónimo de -p --stat.

-z
Cuando se ha dado --raw, --numstat, --name-only o --name-status, no munge
nombres de ruta y utilice NUL como terminadores de campo de salida.

Sin esta opción, cada salida de nombre de ruta tendrá TAB, LF, comillas dobles y
caracteres de barra invertida reemplazados por \ t, \ n, \ "y \\, respectivamente, y el nombre de la ruta
se incluirá entre comillas dobles si se produjo alguno de esos reemplazos.

--sólo nombre
Muestra solo los nombres de los archivos modificados.

--nombre-estado
Muestra solo los nombres y el estado de los archivos modificados. Vea la descripción del --diff-filter
opción sobre el significado de las letras de estado.

--submódulo [= ]
Especifique cómo se muestran las diferencias en los submódulos. Cuando --submodule o --submodule = log
se da, el log se utiliza el formato. Este formato enumera las confirmaciones en el rango como git-
submódulo(1) resumen lo hace. Omitir la opción --submodule o especificar
--submodule = short, usa el Corto formato. Este formato solo muestra los nombres de los
confirma al principio y al final del rango. Se puede modificar a través del submódulo diff.
variable de configuración.

--color [= ]
Mostrar diferencia de colores. --color (es decir, sin =) es lo mismo que --color = always.
puede ser siempre, nunca o automático. Puede ser cambiado por el color.ui y
ajustes de configuración de color.diff.

--sin color
Desactive la diferencia de colores. Esto se puede utilizar para anular los ajustes de configuración. Es el
igual que --color = never.

--word-diff [= ]
Muestre una diferencia de palabra, usando el para delimitar palabras cambiadas. Por defecto, las palabras son
delimitado por espacios en blanco; consulte --word-diff-regex a continuación. los predeterminado a llanura,
y debe ser uno de:

Color
Resalte las palabras cambiadas usando solo colores. Implica --color.

llanura
Muestra palabras como [-removed-] y {+ added +}. No hace ningún intento de escapar de la
delimitadores si aparecen en la entrada, por lo que la salida puede ser ambigua.

porcelana
Utilice un formato especial basado en líneas destinado al consumo de scripts.
Las tiradas agregadas / eliminadas / sin cambios se imprimen en el formato de diferencia unificada habitual,
comenzando con un carácter + / - / `` al principio de la línea y extendiéndose hasta
el fin de la línea. Las nuevas líneas en la entrada están representadas por una tilde ~ en una línea
propia.

ninguna
Desactive la diferencia de palabras de nuevo.

Tenga en cuenta que a pesar del nombre del primer modo, el color se usa para resaltar el cambio
partes en todos los modos si está habilitado.

--word-diff-regex =
Usar para decidir qué es una palabra, en lugar de considerar corridas de espacios no en blanco para
sea ​​una palabra. También implica --word-diff a menos que ya esté habilitado.

Cada partido no superpuesto del se considera una palabra. Cualquier cosa entre
estas coincidencias se consideran espacios en blanco y se ignoran (!) a los efectos de encontrar
diferencias. Es posible que desee agregar | [^ [: espacio:]] a su expresión regular para hacer
asegúrese de que coincida con todos los caracteres que no sean espacios en blanco. Una coincidencia que contiene una nueva línea es
truncado silenciosamente (!) en la nueva línea.

Por ejemplo, --word-diff-regex =. tratará cada carácter como una palabra y,
correspondientemente, muestre las diferencias carácter por carácter.

La expresión regular también se puede configurar mediante un controlador de diferencias o una opción de configuración, consulte
atributos de git(1) o git-config(1). Darlo anula explícitamente cualquier controlador de diferencia o
ajuste de configuración. Los controladores Diff anulan los ajustes de configuración.

--color-words [= ]
Equivalente a --word-diff = color plus (si se especificó una expresión regular)
--word-diff-regex = .

--no-renombra
Desactive la detección de cambio de nombre, incluso cuando el archivo de configuración indique lo predeterminado
así.

--cheque
Advertir si los cambios introducen errores de espacios en blanco. Lo que se consideran errores de espacios en blanco es
controlado por la configuración de core.whitespace. De forma predeterminada, espacios en blanco finales
(incluidas las líneas que constan únicamente de 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 son
considerados errores de espacio en blanco. Sale con un estado distinto de cero si se encuentran problemas. No
compatible con --exit-code.

--ws-error-highlight =
Resalte los errores de espacio en blanco en las líneas especificadas por en el color especificado por
color.diff.whitespace. es una lista separada por comas de contexto antiguo, nuevo. Cuando
esta opción no se ofrece, solo se resaltan los errores de espacio en blanco en las líneas nuevas. P.ej
--ws-error-highlight = new, old resalta los errores de espacio en blanco tanto eliminados como agregados
líneas. todos se pueden utilizar como una abreviatura para el contexto antiguo, nuevo.

- índice completo
En lugar del primer puñado de caracteres, muestre el blob completo anterior y posterior a la imagen
nombres de objeto en la línea "índice" al generar la salida en formato de parche.

--binario
Además de --full-index, genera una diferencia binaria que se puede aplicar con git-apply.

--abbrev [= ]
En lugar de mostrar el nombre completo del objeto hexadecimal de 40 bytes en la salida con formato diff-raw
y las líneas de encabezado del árbol de diferencias, muestran solo un prefijo parcial. Esto es independiente de la
- opción de índice completo anterior, que controla el formato de salida del parche de diferencias. No por defecto
el número de dígitos se puede especificar con --abbrev = .

-B[ ] [/ ], --break-reescribe [= [ ] [/ ]]
Divida los cambios de reescritura completa en pares de eliminar y crear. Esto sirve dos
propósitos:

Afecta la forma en que un cambio que equivale a una reescritura total de un archivo, no como una serie.
de eliminación e inserción mezcladas con muy pocas líneas que coinciden
textualmente como el contexto, pero como una sola eliminación de todo lo antiguo seguido de un
inserción única de todo lo nuevo, y el número m controla este aspecto de la -B
opción (predeterminado al 60%). -B / 70% especifica que menos del 30% del original debe
permanecen en el resultado para que Git lo considere una reescritura total (es decir, de lo contrario, el
El parche resultante será una serie de eliminación e inserción mezcladas con el contexto.
líneas).

Cuando se utiliza con -M, un archivo totalmente reescrito también se considera la fuente de un
renombrar (generalmente -M solo considera un archivo que desapareció como la fuente de un cambio de nombre),
y el número n controla este aspecto de la opción -B (por defecto es 50%). -B20%
especifica que un cambio con adición y supresión en comparación con el 20% o más de la
El tamaño del archivo es elegible para ser elegido como una posible fuente de cambio de nombre a
otro archivo.

-METRO[ ], --find-renames [= ]
Detectar cambios de nombre. Si se especifica n, es un umbral en el índice de similitud (es decir,
cantidad de adiciones / eliminaciones en comparación con el tamaño del archivo). Por ejemplo, -M90% significa
Git debería considerar un par de eliminar / agregar como un cambio de nombre si más del 90% del archivo
no ha cambiado. Sin un signo de%, el número debe leerse como una fracción, con un
punto decimal antes. Es decir, -M5 se convierte en 0.5 y, por tanto, es lo mismo que -M50%.
De manera similar, -M05 es lo mismo que -M5%. Para limitar la detección a cambios de nombre exactos, utilice -M100%.
El índice de similitud predeterminado es del 50%.

-C[ ], --find-copies [= ]
Detecta copias y renombra. Consulte también --find-copies-hard. Si se especifica n,
tiene el mismo significado que para -M .

- encontrar copias más difíciles
Por motivos de rendimiento, de forma predeterminada, la opción -C busca copias solo si el archivo original
de la copia se modificó en el mismo conjunto de cambios. Esta bandera hace que el comando inspeccione
archivos no modificados como candidatos para la fuente de copia. Esta es una muy cara
operación para proyectos grandes, así que utilícelo con precaución. Dar más de una opción -C
tiene el mismo efecto.

-D, - eliminar-irreversible
Omita la preimagen para las eliminaciones, es decir, imprima solo el encabezado pero no la diferencia entre los
preimage y / dev / null. El parche resultante no debe aplicarse con parche o
aplicar git; esto es únicamente para personas que solo quieren concentrarse en revisar el
texto después del cambio. Además, la salida obviamente carece de información suficiente para
aplique dicho parche al revés, incluso manualmente, de ahí el nombre de la opción.

Cuando se usa junto con -B, omite también la preimagen en la parte de eliminación de un
eliminar / crear par.

-l
Las opciones -M y -C requieren un tiempo de procesamiento O (n ^ 2) donde n es el número de
posibles objetivos de cambio de nombre / copia. Esta opción evita que se ejecute la detección de cambio de nombre / copia
si el número de destinos para renombrar / copiar excede el número especificado.

--diff-filter = [(A | C | D | M | R | T | U | X | B) ... [*]]
Seleccione solo archivos agregados (A), copiados (C), eliminados (D), modificados (M), renombrados
(R), tienen su tipo (es decir, archivo regular, enlace simbólico, submódulo, ...) cambiado (T), son
No fusionados (U), son Desconocidos (X) o su emparejamiento se ha roto (B). Cualquier combinación
de los caracteres de filtro (incluido ninguno) se pueden utilizar. Cuando se agrega * (Todo o nada)
a la combinación, se seleccionan todas las rutas si hay algún archivo que coincida con otros
criterios en la comparación; si no hay ningún archivo que coincida con otros criterios, nada
se selecciona.

-S
Busque diferencias que cambien el número de apariciones de la cadena especificada
(es decir, adición / eliminación) en un archivo. Destinado al uso del guionista.

Es útil cuando busca un bloque exacto de código (como una estructura) y desea
para conocer la historia de ese bloque desde que nació: use la función
iterativamente para alimentar el bloque interesante en la preimagen de nuevo en -S, y continuar
hasta que obtenga la primera versión del bloque.

-GRAMO
Busque diferencias cuyo texto de parche contenga líneas agregadas / eliminadas que coincidan .

Para ilustrar la diferencia entre -S --pickaxe-regex y -G , considerar
una confirmación con la siguiente diferencia en el mismo archivo:

+ return! regexec (regexp, two-> ptr, 1, ®match, 0);
...
- hit =! regexec (regexp, mf2.ptr, 1, ®match, 0);

Mientras que git log -G "regexec \ (regexp" mostrará esta confirmación, git log -S "regexec \ (regexp"
--pickaxe-regex no lo hará (porque el número de apariciones de esa cadena no
cambio).

Consulte las pico entrada en gitdiffcore(7) para obtener más información.

--pico-todo
Cuando -S o -G encuentra un cambio, muestra todos los cambios en ese conjunto de cambios, no solo el
archivos que contienen el cambio en .

--pico-regex
Trate el dado a -S como una expresión regular POSIX extendida para que coincida.

-O
Imprima el parche en el orden especificado en el , que tiene un globo de caparazón
patrón por línea. Esto anula la variable de configuración diff.orderFile (consulte git-
config(1)). Para cancelar diff.orderFile, use -O / dev / null.

-R
Intercambia dos entradas; es decir, mostrar las diferencias entre el índice o el archivo en disco y el árbol
contenido.

--relativo [= ]
Cuando se ejecuta desde un subdirectorio del proyecto, se le puede indicar que excluya los cambios externos
el directorio y mostrar los nombres de ruta relacionados con él con esta opción. Cuando no estas en
un subdirectorio (por ejemplo, en un repositorio simple), puede nombrar qué subdirectorio hacer
la salida relativa a dando un como argumento.

-un texto
Trate todos los archivos como texto.

--ignorar-espacio-en-eol
Ignore los cambios en los espacios en blanco en EOL.

-b, --ignorar-cambio-de-espacio
Ignore los cambios en la cantidad de espacios en blanco. Esto ignora los espacios en blanco al final de la línea y
considera que todas las demás secuencias de uno o más espacios en blanco son equivalentes.

-w, --ignorar-todo-espacio
Ignore los espacios en blanco al comparar líneas. Esto ignora las diferencias incluso si una línea tiene
espacios en blanco donde la otra línea no tiene ninguno.

--ignorar-líneas-en-blanco
Ignore los cambios cuyas líneas estén todas en blanco.

--inter-hunk-context =
Muestre el contexto entre bloques de diferencias, hasta el número especificado de líneas, por lo tanto
fusionando macizos que están cerca unos de otros.

-W, --función-contexto
Muestre las funciones circundantes completas de los cambios.

--código de salida
Haga que el programa salga con códigos similares a diff(1). Es decir, sale con 1 si hay
fueron diferencias y 0 significa que no hay diferencias.

--tranquilo
Deshabilite todas las salidas del programa. Implica --exit-code.

--ext-diferencia
Permita que se ejecute un asistente de diferencias externo. Si configura un controlador de diferencia externo con
atributos de git(5), debe utilizar esta opción con registro de git(1) y amigos.

--no-ext-diff
No permitir controladores de diferenciales externos.

--textconv, --no-textconv
Permitir (o no permitir) que se ejecuten filtros de conversión de texto externos al comparar archivos binarios
archivos. Ver atributos de git(5) para obtener más detalles. Dado que los filtros de conversión de texto suelen ser
conversión unidireccional, la diferencia resultante es adecuada para el consumo humano, pero no puede
se aplicado. Por esta razón, los filtros de conversión de texto están habilitados de forma predeterminada solo para git-
diff(1) y registro de git(1), pero no para parche de formato git(1) o comandos de plomería diff.

--ignore-submodules [= ]
Ignore los cambios en los submódulos en la generación de diferencias. puede ser "ninguno",
"sin seguimiento", "sucio" o "todos", que es el valor predeterminado. El uso de "ninguno" considerará el
submódulo modificado cuando contiene archivos modificados o sin seguimiento o su HEAD
difiere de la confirmación registrada en el superproyecto y se puede utilizar para anular cualquier
ajustes de la pasar por alto en opción git-config(1) o módulos de git(5). Cuando "sin seguimiento" es
Los submódulos usados ​​no se consideran sucios cuando solo contienen contenido sin seguimiento (pero
todavía se escanean en busca de contenido modificado). El uso de "sucio" ignora todos los cambios en el
árbol de trabajo de los submódulos, solo los cambios en las confirmaciones almacenadas en el superproyecto son
mostrado (este era el comportamiento hasta 1.7.0). El uso de "todos" oculta todos los cambios en
submódulos.

--src-prefix =
Muestra el prefijo de fuente proporcionado en lugar de "a /".

--dst-prefix =
Muestra el prefijo de destino dado en lugar de "b /".

--no-prefijo
No muestre ningún prefijo de origen o destino.

Para obtener una explicación más detallada sobre estas opciones comunes, consulte también gitdiffcore(7).

...
los los parámetros, cuando se dan, se utilizan para limitar la diferencia a las rutas nombradas (usted
puede dar nombres de directorio y obtener diff para todos los archivos debajo de ellos).

RAW SALIDA FORMATO


El formato de salida sin procesar de "git-diff-index", "git-diff-tree", "git-diff-files" y "git
diff --raw "son muy similares.

Todos estos comandos comparan dos conjuntos de cosas; lo que se compara difiere:

git-diff-index
compara el y los archivos del sistema de archivos.

git-diff-index --cached
compara el y el índice.

git-diff-tree [-r] [ ...]
compara los árboles nombrados por los dos argumentos.

git-diff-files [ ...]
compara el índice y los archivos del sistema de archivos.

El comando "git-diff-tree" comienza su salida imprimiendo el hash de lo que está siendo
comparado. Después de eso, todos los comandos imprimen una línea de salida por cada archivo modificado.

Una línea de salida se formatea de esta manera:

edición in situ: 100644 100644 bcd1234 ... 0123456 ... M file0
copy-edit: 100644 100644 abcd123 ... 1234567 ... C68 archivo1 archivo2
renombrar-editar: 100644 100644 abcd123 ... 1234567 ... R86 archivo1 archivo3
crear: 000000 100644 0000000 ... 1234567 ... Un archivo4
borrar: 100644 000000 1234567 ... 0000000 ... Archivo D5
no fusionado: 000000 000000 0000000 ... 0000000 ... Archivo U6

Es decir, de izquierda a derecha:

1. dos puntos.

2. modo para "src"; 000000 si se crea o no se fusiona.

3. un espacio.

4. modo para "dst"; 000000 si se elimina o no se fusiona.

5. un espacio.

6. sha1 para "src"; 0 {40} si se crea o no se fusiona.

7. un espacio.

8. sha1 para "dst"; 0 {40} si se crea, no se fusiona o "mira el árbol de trabajo".

9. un espacio.

10. estado, seguido de un número de "puntuación" opcional.

11. una pestaña o un NUL cuando -z se utiliza la opción.

12. ruta de "src"

13. una pestaña o un NUL cuando -z se utiliza la opción; solo existe para C o R.

14. ruta de "dst"; solo existe para C o R.

15. un LF o un NUL cuando -z se utiliza la opción para terminar el registro.

Las posibles cartas de estado son:

· A: adición de un archivo

· C: copia de un archivo en uno nuevo

· D: borrado de un archivo

· M: modificación del contenido o modo de un archivo

· R: cambio de nombre de un archivo

· T: cambio en el tipo de archivo

· U: el archivo no está fusionado (debe completar la fusión antes de que se pueda confirmar)

· X: tipo de cambio "desconocido" (lo más probable es que se trate de un error, infórmalo)

Las letras de estado C y R siempre van seguidas de una puntuación (que denota el porcentaje de
similitud entre el origen y el destino del movimiento o copia). La letra de estado M puede ser
seguido de una puntuación (que indica el porcentaje de disimilitud) para las reescrituras de archivos.

se muestra como todo 1 si un archivo es nuevo en el sistema de archivos y no está sincronizado con
El índice.

Ejemplo:

: 100644 100644 5be4a4 ...... 000000 ...... M file.c

Cuando no se utiliza la opción -z, se representan los caracteres TAB, LF y barra invertida en los nombres de ruta
como \ t, \ n y \\, respectivamente.

DIFF FORMATO PARA FUSIONES


"git-diff-tree", "git-diff-files" y "git-diff --raw" pueden tomar -c or --cc opción de
generar salida diff también para fusiones confirmadas. La salida difiere del formato descrito
arriba de la siguiente manera:

1. hay dos puntos para cada padre

2. hay más modos "src" y "src" sha1

3. el estado son caracteres de estado concatenados para cada padre

4. sin número de "puntuación" opcional

5. ruta única, solo para "dst"

Ejemplo:

:: 100644 100644 100644 fabadb8 ... cc95eb0 ... 4866510 ... MM describe.c

Tenga en cuenta que combinado diff enumera solo los archivos que fueron modificados de todos los padres.

GENERANDO PARCHES HE TRABAJADO -P


Cuando "git-diff-index", "git-diff-tree" o "git-diff-files" se ejecutan con un -p opción, "git
diff "sin el --crudo , o "git log" con la opción "-p", no producen la
salida descrita anteriormente; en su lugar, producen un archivo de parche. Puedes personalizar la creación
de dichos parches a través de las variables de entorno GIT_EXTERNAL_DIFF y GIT_DIFF_OPTS.

Lo que produce la opción -p es ligeramente diferente del formato de diferencia tradicional:

1. Está precedido por un encabezado "git diff" que se ve así:

diff --git a / archivo1 b / archivo2

Los nombres de archivo a / yb / son los mismos a menos que se trate de un cambio de nombre / copia. Especialmente, incluso
para una creación o eliminación, / dev / null es no utilizado en lugar de a / o b /
nombres de archivo.

Cuando se trata de cambiar el nombre / copiar, file1 y file2 muestran el nombre del archivo fuente del
renombrar / copiar y el nombre del archivo que produce el cambio de nombre / copia, respectivamente.

2. Va seguido de una o más líneas de encabezado extendidas:

modo antiguo
nuevo modo
modo de archivo eliminado
nuevo modo de archivo
Copiado de
copiar a
cambiar el nombre de
cambiar el nombre a
índice de similitud
índice de disimilitud
índice ..

Los modos de archivo se imprimen como números octales de 6 dígitos, incluido el tipo de archivo y el archivo
bits de permiso.

Los nombres de ruta en los encabezados extendidos no incluyen los prefijos a / y b /.

El índice de similitud es el porcentaje de líneas sin cambios y el índice de disimilitud
es el porcentaje de líneas cambiadas. Es un número entero redondeado hacia abajo, seguido de un
signo de porcentaje. Por tanto, el valor del índice de similitud del 100% se reserva para dos archivos iguales,
mientras que una disimilitud del 100% significa que ninguna línea del archivo anterior llegó al nuevo
uno.

La línea de índice incluye la suma de comprobación SHA-1 antes y después del cambio. los es
incluido si el modo de archivo no cambia; de lo contrario, las líneas separadas indican el antiguo
y el nuevo modo.

3. Los caracteres TAB, LF, comillas dobles y barra invertida en los nombres de ruta se representan como \ t, \ n,
\ "y \\, respectivamente. Si hay necesidad de tal sustitución, el conjunto
el nombre de la ruta se pone entre comillas dobles.

4. Todos los archivos file1 en la salida se refieren a archivos antes de la confirmación, y todos los archivos file2
los archivos se refieren a archivos después de la confirmación. Es incorrecto aplicar cada cambio a cada
archivo secuencialmente. Por ejemplo, este parche intercambiará ayb:

diff --git a / ab / b
cambiar el nombre de un
cambiar el nombre a b
diff --git a / bb / a
cambiar el nombre de b
cambiar el nombre a un

CONJUNTO DIFF FORMATO


Cualquier comando que genere diferencias puede tomar la opción -c o --cc para producir un combinado diff cuando
mostrando una fusión. Este es el formato predeterminado cuando se muestran fusiones con diferencia git(1) o git-
Mostrar(1). Tenga en cuenta también que puede dar la opción -m a cualquiera de estos comandos para forzar
generación de diferencias con padres individuales de una combinación.

A combinado diff el formato se ve así:

diff --combinado describe.c
índice fabadb8, cc95eb0..4866510
--- a / describe.c
+++ b / describe.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date> b_date)? -1: (a_date == b_date)? 0: 1;
}

- descripción vacía estática (char * arg)
-static void describe (estructura de confirmación * cmit, int last_one)
++ descripción vacía estática (char * arg, int last_one)
{
+ unsigned char sha1 [20];
+ estructura de compromiso * cmit;
struct commit_list * lista;
static int inicializado = 0;
estructura nombre_compromiso * n;

+ si (get_sha1 (arg, sha1) <0)
+ uso (describe_usage);
+ cmit = lookup_commit_reference (sha1);
+ si (! cmit)
+ uso (describe_usage);
+
if (! initialized) {
inicializado = 1;
for_each_ref (get_name);

1. Está precedido por un encabezado "git diff", que se ve así (cuando -c opción es
usó):

diff: archivo combinado

o así (cuando --cc se utiliza la opción):

archivo diff --cc

2. Va seguido de una o más líneas de encabezado extendidas (este ejemplo muestra una combinación con
dos padres):

índice , ..
modo , ..
nuevo modo de archivo
modo de archivo eliminado ,

El modo , .. La línea aparece sólo si al menos uno de los es
diferente al resto. Encabezados extendidos con información sobre los contenidos detectados
movimiento (cambios de nombre y detección de copia) están diseñados para funcionar con diff de dos
y no se utilizan con el formato de diferencias combinado.

3. Va seguido de un encabezado de dos líneas de archivo / a archivo.

--- un archivo
+++ b / archivo

Similar al encabezado de dos líneas para el tradicional unificado formato diff, / dev / null se utiliza para
señal de archivos creados o eliminados.

4. El formato del encabezado de fragmentos se modifica para evitar que las personas lo introduzcan accidentalmente
parche -p1. El formato de diferencias combinado se creó para revisar los cambios de confirmación de fusión, y
no estaba destinado a aplicar. El cambio es similar al cambio en el extendido índice
encabezamiento:

@@@ @@@

Hay (número de padres + 1) caracteres @ en el encabezado del fragmento para la diferencia combinada
formato.

A diferencia del tradicional unificado formato diff, que muestra dos archivos A y B con un solo
columna que tiene - (menos - aparece en A pero eliminado en B), + (más - falta en A pero
agregado a B), o prefijo "" (espacio - sin cambios), este formato compara dos o más archivos
archivo1, archivo2, ... con un archivo X, y muestra cómo X se diferencia de cada archivoN. Una columna
para cada uno de los archivos N se antepone a la línea de salida para notar cómo la línea de X es diferente de
él.

Un carácter en la columna N significa que la línea aparece en el archivo N pero no aparece
en el resultado. Un carácter + en la columna N significa que la línea aparece en el resultado,
y fileN no tiene esa línea (en otras palabras, la línea fue agregada, desde el punto de
vista de ese padre).

En el resultado del ejemplo anterior, la firma de la función se cambió de ambos archivos (por lo tanto, dos
- eliminaciones de file1 y file2, más ++ para significar que una línea que se agregó no
aparecen en archivo1 o archivo2). También otras ocho líneas son iguales desde el archivo1 pero no
no aparece en el archivo2 (por lo tanto, tiene el prefijo +).

Cuando se muestra en git diff-tree -c, compara los padres de una confirmación de fusión con la fusión
resultado (es decir, file1..fileN son los padres). Cuando se muestra en git diff-files -c, compara
los dos padres de fusión no resueltos con el archivo del árbol de trabajo (es decir, el archivo1 es la etapa 2, también conocida como
"nuestra versión", file2 es la etapa 3 también conocida como "su versión").

OTROS DIFF FORMATOS


La opción --summary describe los archivos recién agregados, eliminados, renombrados y copiados. El --stat
la opción agrega difstat(1) gráfico a la salida. Estas opciones se pueden combinar con otras
opciones, como -p, y están destinadas al consumo humano.

Cuando se muestra un cambio que implica un cambio de nombre o una copia, la salida --stat formatea el
nombres de ruta de forma compacta mediante la combinación de prefijos y sufijos comunes de los nombres de ruta. Por ejemplo, un
el cambio que mueve arch / i386 / Makefile a arch / x86 / Makefile mientras se modifican 4 líneas será
se muestra así:

arch / {i386 => x86} / Makefile | 4 + -

La opción --numstat da la difstat(1) información pero está diseñado para facilitar la máquina
consumo. Una entrada en la salida --numstat se ve así:

1 2 LÉAME
3 1 arco / {i386 => x86} / Makefile

Es decir, de izquierda a derecha:

1. el número de líneas agregadas;

2. una pestaña;

3. el número de líneas eliminadas;

4. una pestaña;

5. nombre de ruta (posiblemente con información de cambio de nombre / copia);

6. una nueva línea.

Cuando la opción de salida -z está en vigor, la salida se formatea de esta manera:

1 2 LÉAME NUL
3 1 NUL arch / i386 / Makefile NUL arch / x86 / Makefile NUL

Esto es:

1. el número de líneas agregadas;

2. una pestaña;

3. el número de líneas eliminadas;

4. una pestaña;

5. un NUL (solo existe si se le cambia el nombre o se copia);

6. nombre de ruta en preimagen;

7. un NUL (solo existe si se le cambia el nombre o se copia);

8. nombre de ruta en postimage (solo existe si se le cambia el nombre / se copia);

9. un NUL.

El NUL adicional antes de la ruta de preimagen en caso de cambio de nombre es permitir scripts que lean el
salida para saber si el registro actual que se está leyendo es un registro de ruta única o un cambio de nombre / copia
grabar sin leer por delante. Después de leer las líneas agregadas y eliminadas, leer hasta NUL
daría el nombre de la ruta, pero si es NUL, el registro mostrará dos rutas.

EJEMPLOS


Varias formas de verificar su árbol de trabajo

$ git diferencia (1)
$ git diff - en caché (2)
$ git diff CABEZA (3)

1. Los cambios en el árbol de trabajo aún no están preparados para la próxima confirmación.
2. Cambios entre el índice y su última confirmación; lo que estarías cometiendo si tu
ejecute "git commit" sin la opción "-a".
3. Cambios en el árbol de trabajo desde su última confirmación; que estarías cometiendo si
ejecutas "git commit -a"

Comparando con confirmaciones arbitrarias

prueba de diferencia de $ git (1)
$ git diff HEAD - ./test (2)
$ git diff HEAD ^ HEAD (3)

1. En lugar de utilizar la punta de la rama actual, compare con la punta de "prueba"
.
2. En lugar de comparar con la punta de la rama de "prueba", compare con la punta de la
rama actual, pero limite la comparación al archivo "prueba".
3. Compare la versión antes de la última confirmación y la última confirmación.

Comparando ramas

$ git diff maestro de temas (1)
$ git diff tema..maestro (2)
$ git diff tema ... maestro (3)

1. Cambios entre los consejos del tema y las ramas maestras.
2. Lo mismo que arriba.
3. Cambios que ocurrieron en la rama maestra desde que se inició la rama temática
fuera de él.

Limitar la salida de diferencias

$ git diff --diff-filter = MRC (1)
$ git diff --nombre-estado (2)
$ git diff arch / i386 incluyen / asm-i386 (3)

1. Muestra solo la modificación, el cambio de nombre y la copia, pero no la adición ni la eliminación.
2. Muestra solo los nombres y la naturaleza del cambio, pero no la salida de diferencias real.
3. Limite la salida de diferencias a subárboles con nombre.

Munging la salida de diferencia

$ git diff - buscar-copias-más difíciles -B -C (1)
$ git diferencia -R (2)

1. Dedique ciclos adicionales a buscar cambios de nombre, copias y reescrituras completas (muy caro).
2. Diferencia de salida en reversa.

Use git-diff en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad