tener tag remove qué proyecto podemos para oneline nuestros mayor log herramienta hacer hace control git git-stash

tag - ¿Es posible previsualizar los contenidos ocultos en git?



¿qué hace git log-oneline? (14)

A menudo guardo el trabajo para más tarde, luego aparecen otras cosas, y unas semanas más tarde, quiero inspeccionar el alijo y averiguar qué cambios haría si lo aplicara al árbol de trabajo en su estado actual.

Sé que puedo hacer una diferencia en el alijo, pero esto me muestra todas las diferencias entre el árbol de trabajo y el alijo, mientras que solo me interesa saber qué va a cambiar el alijo.

¿Cómo puedo hacer esto?


Mostrar todos los escondites

Sólo nombres de archivos:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done

Contenido completo del archivo en todos los escondites:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done

Obtendrá una salida difusa coloreada que puede paginar con espacio ( adelante ) y b ( hacia atrás ), y q para cerrar el buscapersonas para el alijo actual. Si prefiere tenerlo en un archivo, agregue > stashes.diff al comando.


¿Simplemente aplicando el alijo usando git stash apply ? Esto no elimina el alijo, por lo que puede restablecer su árbol de trabajo sin perder el trabajo escondido, si no le gustan los cambios. Y si te gustan, simplemente puedes eliminar el alijo con git stash drop .


Cuando se hizo esta pregunta por primera vez, es posible que esta no haya sido una opción, pero, si usa PyCharm, puede usar la herramienta UnStash Changes (VCS-> Git-> UnStash Changes ...). Esto le permite ver la lista de cambios ocultos, así como pop, soltar, borrar o aplicar (en una nueva rama si lo desea):

y ver los archivos modificados por stash:

así como diffs por archivo. En las diferencias, puede seleccionar cambios individuales para aplicarlos de los cambios ocultos a la rama de trabajo (usando el chevron que apunta hacia la izquierda):


En adicional a las respuestas existentes que sugiere usar (para mostrar la diferencia del tercer alijo del último)

git stash show -p stash@{2}

Tenga en cuenta que en la documentación de git-stash , está escrito que

También se puede hacer referencia a las ocultaciones especificando solo el índice de ocultación (por ejemplo, el entero n es equivalente a la stash@{n} ).

Por lo tanto, también es posible usar (esto es equivalente al comando anterior)

git stash show -p 2

Lo que también debería evitar algunos problemas de Powershell .


Lo utilizo para ver todos mis escondites con resaltado de color diff (en Fedora 21):

git stash list | awk -F: ''{ print "/n/n/n/n"; print $0; print "/n/n"; system("git -c color.ui=always stash show -p " $1); }'' | less -R

(Adaptado de Git: vea qué hay en un alijo sin aplicar el alijo )



Para ver todos los cambios en un alijo sin abrir:

git stash show -p stash@{0}

Para ver los cambios de un archivo en particular en un alijo no emergente:

git diff HEAD stash@{0} -- path/to/filename.php


Para ver una lista actual de alijo, use

git stash list

Debería poder ver una lista, como

stash@{0}: WIP on ... stash@{1}: ... stash@{2}: ... ...

Para ver diff en cualquiera de esos git stash show -p stash@{n} , use el comando git stash show -p stash@{n}


Primero podemos hacer uso de la lista de git stash para obtener todos los elementos de stash:

$git stash list stash@{0}: WIP on ... stash@{1}: WIP on .... stash@{2}: WIP on ...

Luego podemos usar git stash show stash@{N} para verificar los archivos bajo un stash específico N Si lo disparamos entonces podemos obtener:

$ git stash show stash@{2} fatal: ambiguous argument ''stash@2'': unknown revision or path not in the working tree. Use ''--'' to separate paths from revisions, like this: ''git <command> [<revision>...] -- [<file>...]''

La razón de esto puede ser que la cáscara está devorando llaves y git ve el stash@2 y no el stash@{2} . Y para solucionar esto, necesitamos usar comillas simples para llaves como:

git stash show stash@''{2''} com/java/myproject/my-xml-impl.xml | 16 ++++++++-------- com/java/myproject/MyJavaClass.java | 16 ++++++++-------- etc.


Puedes ver la lista de todos los escondites con el siguiente comando:

$ git stash list stash@{0}: WIP on dev: ddd4d75 spelling fix stash@{1}: WIP on dev: 40e65a8 setting width for messages ...... ...... ...... stash@{12}: WIP on dev: 264fdab added token based auth

El alijo más nuevo es el primero.

Simplemente puede seleccionar el índice n del alijo proporcionado en la lista anterior y usar el siguiente comando para ver los detalles ocultos

git stash show -p stash@{3}

Similar,

git stash show -p stash@{n}

También puede verificar diff usando el comando:

git diff HEAD stash@{n} -- /path/to/file


Soy fanático de la IU gráfica de gitk para visualizar repositorios de git. Puedes ver el último artículo escondido con:

gitk stash

También puede usar ver cualquiera de sus cambios ocultos (como se indica en la lista de git stash list de git stash list ). Por ejemplo:

gitk stash@{2}

En la siguiente captura de pantalla, puede ver el alijo como una confirmación en la parte superior izquierda, cuándo y de dónde proviene en el historial de confirmación, la lista de archivos modificada en la parte inferior derecha y la línea por línea en la parte inferior. -izquierda. Todo mientras el alijo todavía está escondido.


Ver lista de cambios ocultos

git stash list

Para ver la lista de archivos cambiados en un escondite particular

git stash show -p stash@{0} --name-only

Para ver un archivo en particular en el alijo

git show stash@{0} path/to/file


sí, la mejor manera de ver lo que se modifica es guardar en un archivo así:

git stash show -p stash@{0} > stash.txt


git stash show te mostrará los archivos que cambiaron en tu alijo más reciente. Puedes agregar la opción -p para mostrar la diferencia.

git stash show -p

Si el alijo que le interesa no es el más reciente, a continuación, agregue el nombre del alijo al final del comando:

git stash show -p stash@{2}