Pregunta ¿Cómo muestro los cambios que se han realizado?


Organicé algunos cambios para comprometerme; ¿Cómo puedo ver la diferencia de todos los archivos que se organizan para la siguiente confirmación? Soy consciente de estado de git, pero me gustaría ver los diffs reales, no solo los nombres de los archivos que se organizan.

Vi que el git-diff (1) la página del hombre dice

git diff [--options] [-] [...]

Este formulario es para ver los cambios que hizo en relación con el índice (área de ensayo para el siguiente compromiso). En otras palabras, las diferencias son lo que podría dile a git que agregue más al índice, pero aún no lo has hecho. Puedes organizar estos cambios usando git-add (1).

Desafortunadamente, no puedo entender esto. Debe haber algún práctico delineador para el que pueda crear un alias, ¿verdad?


1694
2017-10-19 09:57


origen


Respuestas:


Simplemente debería ser:

git diff --cached

--cached significa mostrar los cambios en el caché / índice (es decir, cambios por etapas) contra la corriente HEAD. --staged es un sinónimo de --cached.

--staged y --cached no apunta a HEAD, solo diferencia con respecto a HEAD. Si seleccionas qué comprometer usando git add --patch (o git add -p), --staged devolverá lo que está organizado.


2095
2017-10-19 10:07



Un simple gráfico lo aclara:

Simple Git diffs

git diff

Muestra los cambios entre el directorio de trabajo y el índice. Esto muestra lo que se ha cambiado, pero no está configurado para una confirmación.

git diff --cached

Muestra los cambios entre el índice y HEAD (que es la última confirmación en esta rama). Esto muestra lo que se ha agregado al índice y preparado para una confirmación.

git diff HEAD

Muestra todos los cambios entre el directorio de trabajo y HEAD (que incluye cambios en el índice). Esto muestra todos los cambios desde la última confirmación, independientemente de si se han configurado o no para la confirmación.

también:

Hay un poco más de detalle en 365Git.


1410
2017-10-24 21:05



Si estuviera interesado en una vista visual una al lado de otra, difuso herramienta visual diff puede hacer eso. Incluso mostrará tres paneles si se organizan algunos cambios, pero no todos. En el caso de conflictos, incluso habrá cuatro paneles.

Screenshot of diffuse with staged and unstaged edits

Invocarlo con

diffuse -m

en tu copia de trabajo de Git.

Si me preguntas, las mejores diferencias visuales que he visto en una década. Además, no es específico de Git: interopera con una plétora de otros VCS, incluidos SVN, Mercurial, Bazaar, ...

Ver también: Muestre el árbol de etapas y de trabajo en git diff?


51
2018-03-18 07:22



Tenga en cuenta que git status -v  además ¡muestra los cambios por etapas! (lo que significa que debes haber escenificado git add -- algunos cambios. Sin cambios por etapas, sin diferencias con git status -v.
Lo hace desde Git 1.2.0, febrero de 2006)

En su forma larga (por defecto), git status tiene una opción "verbosa" indocumentada que muestra la diferencia entre HEAD e index.

Y está a punto de ser aún más completo: ver "Muestre el árbol de etapas y de trabajo en git diff?"(git 2.3.4+, Q2 2015):

git status -v -v

37
2017-08-31 10:05



Puedes usar este comando.

git diff --cached --name-only

los --cachedopción de git diff significa obtener archivos escalonados, y el --name-only opción significa obtener solo los nombres de los archivos.


22
2017-07-19 17:39



A partir de la versión 1.7 y posterior debería ser:

git diff --staged

14
2017-08-14 23:33



UTILIZAR UNA HERRAMIENTA VISUAL DIFF

La respuesta predeterminada (en la línea de comando)

Las respuestas superiores aquí muestran correctamente cómo ver los cambios almacenados en caché / Index:

$ git diff --cached

o $ git diff --staged que es un alias


Lanzando la herramienta Visual Diff en su lugar

La respuesta predeterminada escupirá los cambios de diff en git bash (es decir, en la línea de comandos o en la consola). Para aquellos que prefieren una representación visual de las diferencias de archivos en etapas, hay un script disponible dentro de git que lanza una herramienta visual diff para cada archivo visto en lugar de mostrarlos en la línea de comando, llamado difftool:

$ git difftool --staged

Esto hará lo mismo que git diff --staged, excepto que cada vez que se ejecuta la herramienta diff (es decir, cada vez que un archivo es procesado por diff), se iniciará la herramienta de diferencia visual predeterminada (en mi entorno, esto es kdiff3)

Después de que la herramienta se inicie, la secuencia de comandos de git diff se detendrá hasta que se cierre la herramienta de diferencia visual. Por lo tanto, deberá cerrar cada archivo para ver el siguiente.


Siempre puedes usar difftool en lugar de diff en comandos git

Para todas sus necesidades de diferencia visual, git difftool funcionará en lugar de cualquier git diff comando, incluidas todas las opciones.

Por ejemplo, para iniciar la herramienta de diferencia visual sin preguntar si debe hacerlo para cada archivo, agregue el -y opción (¡creo que generalmente querrás esto!):

$ git difftool -y --staged

En este caso, extraerá cada archivo de la herramienta de diferencia visual, uno a la vez, y mostrará el siguiente después de cerrar la herramienta.

O para ver la diferencia de un archivo particular que se organiza en el Index:

$ git difftool -y --staged <<relative path/filename>>

Para todas las opciones, consulte la página man:

$ git difftool --help


Configurar la herramienta Visual Git

Para usar una herramienta visual de git que no sea la predeterminada, use la -t <tool> opción:

$ git difftool -t <tool> <<other args>>

O bien, consulte la página man de difftool para saber cómo configurar git para usar una herramienta de diferencia visual predeterminada diferente.


10
2018-03-14 14:30



Si tiene más de un archivo con cambios por etapas, puede ser más práctico usarlo git add -i, luego selecciona 6: diff, y finalmente elija el archivo (s) que le interese.


7
2017-10-14 18:32



Si sus intenciones son enviar por correo electrónico una sucursal de repos remoto y su primer pase en un registro de cambios de compromiso no está completo, puede corregir la declaración de compromiso antes de presionar de esta manera.

En la zona

... hacer algunos cambios ...

git diff # look at unstaged changes

git commit -am"partial description of changes"

... recordar más cambios no mencionados en commit ...

git diff origin / master # mira los cambios por etapas pero no por empuje

... enmienda la declaración de compromiso escenificada ...

git commit --amend -m"i missed mentioning these changes ...."

git push

7
2018-02-25 21:16