2011-11-14 15 views
55

Ho una memoria salvata per il futuro che voglio dare un nome significativo. Mentre è possibile passare un messaggio come argomento a git stash save, c'è un modo per aggiungere un messaggio a uno stash esistente?Cambia messaggio di Git stash

+0

Riconosco che questa domanda è precedente al duplicato contrassegnato, ma quella domanda ha risposte migliori. – Michael

risposta

45

È possibile modificare direttamente i messaggi memorizzati in .git/logs/refs/stash.

So che probabilmente non è l'ideale, ma dovrebbe funzionare comunque.

+5

Il fatto che sembra funzionare è incredibilmente fortunato: il messaggio è anche memorizzato nel messaggio di commit (gli stash sono rappresentati internamente come commit), e ovviamente non stai cambiando quella. – Cascabel

+0

Funziona; grazie mille – CharlesB

+2

Questo in realtà non cambia il messaggio di commit (vedi 'git show stash' o' git log --all'), solo la voce nel reflog dello stash. – Zaz

15

Non senza scoppiare e salvare di nuovo.

+2

mentre apparentemente inelegante questa è la soluzione più semplice – Kirby

+1

Non è così semplice se i tuoi arresti si trovano su varie diramazioni come "popping and saving again" applicherebbe il commit stashed al branch corrente (che potrebbe fallire nell'unione). Se ti trovi con una lunga lista di fasce probabilmente devi fare un uso migliore della ramificazione. – i3ensays

+1

in un primo momento ho pensato che avesse detto "Non senza fare il pooping" –

11

(Espansione sulla risposta di Manojlds.) La cosa più semplice da allegare a un messaggio è in effetti la rimozione e il ripristino di un messaggio, c'è un comando git stash branch che ti aiuterà a farlo.

git stash branch tmp-add-stash-message 
git stash save "Your stash message" 

L'unico inconveniente è che questa scorta ora sembra provenire dal ramo tmp-add-stash-message. Successivamente, puoi effettuare il checkout di un altro ramo ed eliminare questo ramo temporaneo.

Naturalmente, questo presuppone che la vostra copia di lavoro è pulito, in caso contrario è possibile riporre i cambiamenti in corso :-)

+0

questa risposta è in realtà quella giusta – woohoo

1

Ecco alcuni comandi per aiutare a pop e salvare di nuovo come @manojlds suggerisce:

git stash #save what you have uncommitted to [email protected]{0} 
git stash pop [email protected]{1} #or another <stash> you want to change the message on 
# only if necessary, fix up any conflicts, git reset, and git stash drop [email protected]{1} 
git stash save "new message" 
git pop [email protected]{1} #get back to where you were if you had uncommitted changes to begin with 
9

Sì, c'è un modo, si può provare questo:

git stash store -m "your descriptive message here" [email protected]{1}

Questo creerà un nuovo Stash chiamato [email protected]{0} con il messaggio come sopra.
Questa sequenza è uguale a [email protected]{1}.

Quindi è possibile rimuovere la vecchia scorta @ {1} di cui sopra con:

git stash drop [email protected]{2} # la scorta @ {1} è diventato scorta @ {2} come una nuova scorta è stato creato.

NOTA: non è possibile farlo con lo stash @ {0}: git stash store -m "message here" [email protected]{0} non farà nulla.

+1

Perché non funziona con 'stash {0}'? – CharlesB

+0

In realtà non lo so, ho provato e non ha funzionato.Quindi suppongo che: Se questo chiama su stash @ {1}, allora porta una copia di stash @ {1} in cima allo stack, così quando l'utente chiama 'git stash apply', ottiene un risultato diverso. Se questo chiama su stash @ {0}, quindi la chiamata successiva a 'git stash apply' produce nello stesso risultato. –

+0

c'è 'git stash save" il tuo messaggio "' – woohoo