I've been reading up on git, and I have a very particular question I am struggling to answer.
Some git commands may automatically run git gc; see the --auto flag below for details
Some git commands run git gc --auto after performing operations that could create many loose objects.
Currently those are:
Actual list can be verified by doing a code search.
Also from that you can see that gc on receive can be disabled with
receive.autogc, others just run the gc in the end.