Orgad Shaneh <orgads@xxxxxxxxx> writes: > Running git gc --prune=now during rebase with autostash deletes the > autostash object, and it cannot be recovered when the rebase ends. > > Example: > > #!/bin/sh > > git init > echo 1 > foo; git add foo; git commit -m 'Initial commit' > echo 2 > foo; git add foo; git commit -m 'Second commit' > echo 3 > foo; git rebase -i --autostash HEAD^ > # Choose edit > git gc --prune=now This is totally expected, unfortunately, as the autostash does not use the ref API to use the refs/stash (presumably in order to avoid shifting the shash@{$N} numbers). Because of that, the stash entry is not protected from the garbage collection. This currently falls into "it hurts when I twist my arm this way. --do not do it then" category. It may be a simple fix to teach sequencer.c:apply_save_autostash() not to use a random on-disk file to store the returned value from "git stash create", but use a dedicated ref that is not refs/stash for its own use via proper use of the ref API. > git rebase --continue > # fatal: '3b88163a1bff3859a005554c168d94e5357ee45b' is not a stash-like commit > # error: cannot store 3b88163a1bff3859a005554c168d94e5357ee45b > # Successfully rebased and updated refs/heads/master. > > Thanks, > - Orgad