in git, what ways are there to "lose" a commit in a way that you CAN'T recover using the reflog (so that you need to iterate over every single commit in the repository if you want to find it?

The only ways I know (using git's normal tools) are:

* using `git stash drop` or `git stash pop` to drop a stashed commit
* waiting 90+ days to try to recover the commit (so that it expires from the reflog)
* explicitly deleting the reflog in some way (rm -rf .git, git reflog expire, etc)

@b0rk when I was first learning git, long ago, I used the git svn tool to make a git working directory from one of my svn repost. I used git to work with the project for a while. What I didn't realize in moving back and forth was that my working directory was changed into a detached head state. After quite a bit of work, I put the project aside for a few weeks. The next time the I touched the project all of the commits I had worked on vanished.

Didn't trust git for more than a year, after.

@b0rk Of course, this was not a normal use case, and I missed that I was detached head, but the vomits did vanish completely and unexpectedly.
@gwadej thanks this is a great (and terrifying) example