2011-11-01 18 views
8

¿Es posible decir si ya se ha aplicado un alijo, y por lo tanto ya no es necesario, sin hacer git stash apply? Supongamos que solo estoy usando una rama.¿Cómo se puede saber si ya no se necesita un alijo de git?

Esto podría evitarse utilizando pop en lugar de apply al aplicar un alijo, y por lo tanto, deshacerse del alijo cada vez que se aplica. Sin embargo, a veces uso git stash para mantener una instantánea del trabajo en progreso, en lugar de solo usarlo para pasar de una tarea a otra. Usar pop podría derrotar eso de alguna manera.

Respuesta

9

Simplemente haz una diferencia y verás.

git diff CABEZA alijo @ {0}

+2

En realidad, como usa 'stash @ {0}' de forma predeterminada, 'git diff HEAD stash' es suficiente. –

4

Puede utilizar el siguiente script para obtener git stash list prefijado con marcas de verificación si ya se han aplicado o no hay necesidad de aplicarlos, ya que es ninguna diferencia.

git stash list | while read line; do \ 
    ref=${line%%:*}; \ 
    prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔ " || echo " "); \ 
    echo "$prefix$line"; \ 
done 

Esto le dará una lista como:

[email protected]{0}: WIP on develop: 77a1a66 send 'social.share' message via 'view-req-relay'... 
    [email protected]{1}: WIP on bigcouch: 4bfa3af added couchdb filters... 

Y si te gusta, puedes añadirlo como un alias de git así:

git config --global --add alias.stash-list '!git stash list | while read line; do ref=${line%%:*}; prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔ " || echo " "); echo "$prefix$line"; done' 
git stash-list 

(probado con bash y zsh)

Cuestiones relacionadas