Pregunta Git diff contra un alijo


¿Cómo puedo ver los cambios que hará la desconexión en el árbol de trabajo actual? ¡Me gustaría saber qué cambios se realizarán antes de aplicarlos!


976
2017-10-06 16:48


origen


Respuestas:


Ver el alijo más reciente:

git stash show -p

Ver un alijo arbitrario:

git stash show -p stash@{1}

Desde el git stash páginas de manual:

Por defecto, el comando muestra el diffstat, pero aceptará cualquier   formato conocido por git diff (por ejemplo, git stash show -p stash @ {1} para ver   el segundo escondite más reciente en forma de parche).


1348
2017-10-06 16:50



Para ver el alijo más reciente:

git stash show -p

Para ver un alijo arbitrario:

git stash show -p stash@{1}

Además, uso git diff para comparar el alijo con cualquier rama.

Puedes usar:

git diff stash@{0} master

Para ver todos los cambios en comparación con Branch Master.


O puede usar:

git diff --name-only stash@{0} master

Para encontrar fácilmente solo los nombres de archivo cambiados.


239
2017-07-26 14:33



Si la rama en la que se basan sus cambios se ha modificado, mientras tanto, este comando puede ser útil:

git diff stash@{0}^!

Esto compara el alijo contra el compromiso en el que se basa.


77
2018-03-27 13:23



Si su árbol de trabajo está sucio, puede compararlo con un alijo al primer commit del árbol de trabajo sucio, y luego compararlo con el alijo. Después, puede deshacer la confirmación con el árbol de trabajo sucio (ya que es posible que no desee tener esa confirmación sucia en el registro de confirmación).

También puede usar el siguiente enfoque para comparar dos escondites entre sí (en cuyo caso, al principio solo hace estallar uno de los escondites).

  • Cometa su árbol de trabajo sucio:

    git add .
    git commit -m "Dirty commit"
    
  • Difiere el alijo con ese compromiso:

    git diff HEAD stash@{0}
    
  • Luego, luego, puede revertir la confirmación y volver a colocarla en el directorio de trabajo:

    git reset --soft HEAD~1
    git reset .
    

Ahora has diferido el árbol de trabajo sucio con tu alijo, y has vuelto a donde estabas inicialmente.


30
2018-01-21 13:33



Esto funciona para mí en git versión 1.8.5.2:

git diff stash HEAD

16
2018-01-22 23:36



La respuesta de @Magne es la única fecha (muy tardía) que responde a la interpretación más flexible / útil de la pregunta, pero es un poco más complicado de lo necesario. En lugar de comprometerse y restablecerse, simplemente guarde su copia de trabajo, compárela y desvístala.

git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop

Ese programa muestra las diferencias entre la parte superior de la pila y la carpeta de trabajo haciendo que tu carpeta de trabajo cambie temporalmente la parte superior de la pila de stash (stash @ {0}), moviendo la original hacia arriba una (stash @ {1}) luego comparando el uso de la parte superior original en la posición 'nuevo conjunto' para que vea los cambios que resultarían de aplicarlo sobre su trabajo actual.

"¿Pero qué pasa si no tengo ningún trabajo actual?"  Entonces estás en el caso aburrido normal. Solo usa la respuesta de @Amber

git stash show

o la respuesta de @czerasz

git diff stash@{0}

o admitir que esconderse y desacreditarse es rápido y fácil de todos modos, simplemente suelte los cambios e inspecciónelos. Si no los quiere en este momento, tírelos (el índice actual / carpeta de trabajo cambia). En su totalidad eso es

git stash apply
git diff
git reset
git checkout

13
2018-06-28 16:13



Si tiene herramientas para diff (como más allá de comparar)

git difftool stash HEAD

9
2017-09-09 08:08



FWIW Esto puede ser un poco redundante para todas las otras respuestas y es muy similar a la respuesta aceptada que es acertada; pero tal vez ayudará a alguien a salir. 

git stash show --helpte dará todo lo que necesitas; incluyendo la información del show stash.

mostrar [<stash>]

Muestre los cambios registrados en el alijo como una diferencia entre el estado escondido y su padre original. Cuando no se da, muestra el último. De forma predeterminada, el comando muestra el diffstat, pero aceptará cualquier formato conocido por git diff (por ejemplo, git stash show -p stash @ {1} para ver el segundo alijo más reciente en forma de parche). Puede usar las variables de configuración stash.showStat y / o stash.showPatch para cambiar el comportamiento predeterminado.


2
2017-08-18 16:40