Patrick Steinhardt [off-list ref] writes:
So what you're observing is simply mirroring "reality": the order in
which git does its things here. There can be arbitrarily many
transactions in a given git command, and the only way this can be
changed is by changing how the command operating the transcations works.
In other words, ref transaction is only about changes to the refs.
There is no such "transaction" that treats a series of operations
like object creation and index manipulation that may happen before a
group of refs are updated as a single unit and make it atomic.