Benoit Sigoure [off-list ref] writes:
git reset --hard HEAD~42 and then git reset --hard A.
And if you don't "remember" A, the reflog is here for you.
$ git reflog show HEAD
$ git reset --hard HEAD@{42} # not "the 42th ancestor"
# but "where HEAD was 42 moves ago".
By default, the reflog will expire after IIRC, 3 months, and git-prune
will not prune the objects while they are reachable.
So, it's even safer than you say ;-).
--
Matthieu