Git stash due volte


94

Ho dovuto cambiare rapidamente i rami di git, quindi ho eseguito git stash, ma ho dovuto eseguirlo di nuovo perché uno dei miei file aveva bisogno di essere modificato.

Quindi ho eseguito git stashdue volte e sono pronto per tornare a modificare i miei file. Sono corso git stash applyma non sono convinto che tutti i file che avevo nascosto fossero stati sbloccati. C'è qualcosa che posso fare? Qualche modo per controllare?

Quando corro git stash show, vedo solo l'ultima delle mie due scorte di git.

C'è comunque da mostrare tutto git stashes?


4
git stash list. Se hai fatto due scorte, chiama git stash popdue volte.
Felix Kling

Ciao, l'hai risolto! Dovresti metterlo come risposta. Grazie mille
stephenmurdoch il

Risposte:


169

Puoi ottenere un elenco di tutte le scorte con

git stash list

che ti mostrerà qualcosa di simile

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Se hai fatto due scorte, chiama git stash popdue volte. Al contrario di git stash apply, popapplica e rimuove l'ultima scorta.

Puoi anche fare riferimento a una specifica scorta, ad es

git stash show stash@{1}

o

git stash apply stash@{1}

Molte grazie. Mi ha salvato la giornata.
stephenmurdoch

25
Se vuoi farlo git stash popdue volte perché vuoi entrambi gli stash nello stesso commit ma incontri "errore: le tue modifiche locali ai seguenti file verrebbero sovrascritte dall'unione:" al 2 ° git stash pop, allora puoi: 1) git stash pop, 2) git add .e 3 ) git stash pop.
gabe

Questo mi ha aiutato. Dovevo fare "git stash" e poi "git stash --all" per riporre alcuni nuovi file non tracciati. Fare due volte git stash pop non funzionava. Ho solo riavuto la scorta successiva.
Leopold Kristjansson

0

Mi sono imbattuto in questa situazione, ho fatto due scorte e git stash pop appena tolto dall'ultima scorta. Così ho fatto

git stash list

git stash pop stash@{1}

Questo ha sbloccato la mia prima scorta e ho potuto vedere tutte le mie modifiche!


0

Hai posto alcune domande diverse nel post e altri intervistati hanno dato buone risposte ad alcune di esse. Quello che sembra più importante ma non ha avuto risposta è questo:

>> Non sono convinto che tutti i file che avevo nascosto fossero stati sbloccati. C'è qualcosa che posso fare? Qualche modo per controllare?

Confronta la scorta con l'albero locale

Penso che quello che vuoi fare sia confrontare la scorta con il tuo albero di lavoro locale . Puoi mettere l'opzione -p sul comando stash e sei a posto:

git stash show -p

Se ce n'è uno in particolare che stai cercando, usa il suo nome o ID git stash dall'elenco stash:

git stash show -p stash@{3}

Forse usi il diff?

Se sei davvero interessato a spingere le tue abilità git, potresti sempre optare per un diff. Per vedere la differenza tra ciò che è nello stash e ciò che è archiviato in HEAD sul ramo principale, è possibile utilizzare il seguente diff:

git diff stash@ master

Un altro comando accurato per mostrarti le modifiche per gli elementi nella cronologia di stash che potrebbero tornare utili è --stat:

git stash list --stat

Ma penso che la risposta semplice sia la risposta giusta. Usa l'opzione -p e probabilmente vedrai se la scorta che hai accantonato è stata rimossa .

 git stash show -p stash@{3}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.