and
git commit --fixup
git rebase -i --autosquash
git branch "backup/$(git branch --show-current)/$(date +%s)"
# do whatever you fancy
git reset --hard "backup/$(git branch --show-current)/${thattimestampabove}"
You can't lose anything as long as you have a pointer to it (which doubles as making it easy to find)the only thing that does keep a git object is having a ref that (directly or transitively) points to it