Come nominare e recuperare uno stash per nome in git?

Ho sempre avuto l'impressione che si potesse dare un nome ad uno stash facendo git stash save stashname, che si poteva poi applicare facendo git stash apply stashname. Ma sembra che in questo caso tutto ciò che accade è che stashname sarà usato come descrizione dello stash.

Non c'è modo di nominare effettivamente uno stash? Se no, cosa consigliereste per ottenere una funzionalità equivalente? Essenzialmente ho un piccolo stash che vorrei periodicamente applicare, ma non voglio dover sempre cacciare in git stash list quale sia il suo effettivo numero di stash.

Ecco come si fa:

git stash save "my_stash"

Dove "my_stash" è il nome dello stash.

Alcune altre cose utili da sapere: Tutti gli stash sono memorizzati in una pila. Tipo:

git stash list

Questo elencherà tutte le tue scorte.

Per applicare uno stash e rimuoverlo dalla pila degli stash, digitate:

git stash pop stash@{n}

Per applicare uno stash e mantenerlo nella pila degli stash, scrivi:

git stash apply stash@{n}

Dove n è l'indice della modifica memorizzata.

Commentari (8)

Puoi trasformare una scorta in un ramo se lo ritieni abbastanza importante:

git stash branch  []

dalla pagina man:

Questo crea e controlla un nuovo ramo chiamato a partire dal commit al quale lo è stato originariamente creato, applica le modifiche registrate in al nuovo albero di lavoro e all'indice, quindi abbandona lo se questo si conclude con successo. Quando nessun `` è dato, applica l'ultimo.

Questo è utile se il ramo su cui hai eseguito git stash save è cambiato abbastanza da far fallire git stash apply a causa di conflitti. Poiché lo stash viene applicato sopra il commit che era HEAD nel momento in cui git stash è stato eseguito, ripristina lo stato originariamente stash senza conflitti.

In seguito si può fare il rebase di questo nuovo ramo in qualche altro posto che sia un discendente di dove si era quando si è fatto lo stash.

Commentari (4)

Gli stack non sono pensati per essere cose permanenti come vuoi tu. Probabilmente sarebbe meglio usare i tag sui commit. Costruite la cosa che volete mettere da parte. Fai un commit da esso. Crea un tag per quel commit. Poi fai rollback del tuo ramo su HEAD^. Ora, quando vuoi riapplicare quello stash puoi usare git cherry-pick -n tagname (-n è --no-commit).

Commentari (3)