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 lastash@{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 )
Más allá de la recomendación de gitk en ¿Es posible previsualizar los contenidos ocultos en git? Puedes instalar tig y llamar al tig stash
. Este programa de consola gratuita / abierta también le permite elegir qué alijo para comparar
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}