Finn Arne Gangstad [off-list ref] writes:
Currently there seems to be no way of pusing a sha1 directly, or to
fetch a sha1 directly. When working with submodules, it is convenient
to be able to work with detached HEADs, so it would be good if this
could be supported also by fetch and push.
At least push of an arbitrary commit is already supported, I
think.
For fetch, I would normally say "check the list archives", but
it was very long time ago that it was proposed and discussed.
It has some security and performance implications.