2015-09-11 17 views

risposta

23

Come si può essere trovato in the documentation of git stash, si può essere fortunati se questo funziona:

stashes Recupero che sono stati liquidati/caduto erroneamente

Se per errore cadere o stashes chiare, non possono essere recuperato attraverso i normali meccanismi di sicurezza. Tuttavia, puoi provare il seguente incantesimo per ottenere un elenco di stash che sono ancora nel tuo repository, ma non più raggiungibili:

git fsck --unreachable | commit grep | cut -d \ -f3 | xargs git log --merges --no-passeggiata --grep = WIP

Se si trova il nascondiglio è stata cancellata per errore, allora si può fare:

git stash apply <stash> 

EDIT: Usa questo comando invece è git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP

+0

sua non funziona :( –

+2

@AshishBanker: Poi è andato Che questa sia una lezione per voi Non usare 'git stash' per memorizzare i cambiamenti a cui tieni, usare' git commit', anche se è.. È sempre possibile 'git commit --amend' e' git rebase -i' successivamente. –

+5

Su OSX: '' 'git fsck --unreachable | grep commit | cut -d '' -f3 | xargs git log - unisce --no-walk --grep = WIP''' –

0

Ho eliminato anche una scorta, ma usando la GUI di GitKraken, quindi non so esattamente quale comando git ha eseguito. La risposta scelta non ha funzionato per me, ma almeno mi ha messo sulla strada giusta.

Nel mio caso, la ricerca manuale attraverso - gli oggetti unreachable hanno funzionato. Sono sicuro che c'è un modo più efficiente, ma sono contento di essere stato in grado di recuperare le modifiche.

ids=`git fsck --unreachable | grep blob | cut -d ' ' -f3` 
number_of_ids=`echo $ids | wc -l | tr -d '[:space:]'` 
for i in {1..$number_of_ids}; do git show `echo $ids | sed -n ${i}p` > evaluate$i.rb;done; 

Quindi salva tutti gli oggetti non raggiungibili nei file preceduti da "Valuta". Ho quindi aperto tutti i file in un editor di testo (sublime per me subl evaluate*) e valutato ogni file a sua volta, copiando e incollando manualmente il file nella vecchia versione del file originale se si trattasse di un file dalla memoria che ho eliminato.

Punte:

  • cambiare il .rb per abbinare l'estensione del file dei file che si sta cercando, per ottenere sintassi appropriata evidenziazione se lo vuoi.
  • Se i file non sono inclusi, è possibile ampliare l'ambito della ricerca rimuovendo lo | grep blob (i blob erano dove ho trovato i miei file).