2011-11-01 10 views
8

E 'possibile sapere se uno stash è già stato applicato, e quindi non è più necessario, senza fare git stash apply? Supponiamo che io stia usando solo un ramo.Come si può sapere se un git gash non è più necessario?

Questo potrebbe essere evitato utilizzando pop anziché apply quando si applica una scorta e quindi si elimina la memoria ogni volta che viene applicata. Tuttavia, a volte uso git stash per conservare un'istantanea del lavoro in corso, piuttosto che usarlo solo per passare da un'attività all'altra. L'uso del pop lo sconfiggerebbe un po '.

risposta

9

Basta fare un diff e vedrai.

git diff TESTA scorta @ {0}

+2

In realtà, poiché utilizza 'stash @ {0}' di default, 'git diff HEAD stash' è sufficiente. –

4

È possibile utilizzare il seguente script di shell per ottenere git stash list preceduto da segni di spunta se sono già state applicate o non v'è alcuna necessità di applicarli in quanto v'è nessuna differenza.

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

Questo vi darà una lista come:

[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... 

E se ti piace puoi aggiungerlo come alias git del genere:

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 

(testato con bash e zsh)

Problemi correlati