Linus Torvalds [off-list ref] writes:
Well, it probably wouldn't be too nasty to try to have a "find nearest
commit" kind of thing. It's not quite as simple as bisection, but you
could probably use a bisection-like algorithm to do something like a
binary search to try to guess which tree is the closest.
I had to do something like that in my day job once. A customer
installation was made from a tarball of unknown vintage, and
then field patched with later fixes.
I ended up slurping the thing back and populated my index with
it. Luckily I could guess a good initial point to find the
commit that gives minimum "git diff" output. Then from the
remaining patches it was reasonably easy to find out which
changes were cherry-picked by hand with "git log master --
$paths".