I have a git repo with large submodules, notably the Linux kernel, and shallow clone saves a lot of time. However, QEMU is also a submodule, which I don't control, and QEMU has submodules which don't point to commits that are not on any tag or branch, so: git clone --recurse-submodules --shallow-submodules git://git.qemu.org/qemu.git currently fails with: error: Server does not allow request for unadvertised object 22ead3e0bfdb87516656453336160e0a37b066bf Fetched in submodule path 'capstone', but it did not contain 22ead3e0bfdb87516656453336160e0a37b066bf. Direct fetching of that commit failed. on git 2.16.1. Furthermore, I reproduce this locally with direct filesystem clones: https://github.com/cirosantilli/test-git-web-interface/blob/15335d3002a3e64fc5756b69fb832a733aa63fb9/shallow-submodule.sh#L158 and on GitHub, so I'm guessing it is not just the settings for a specific server? Would it be possible to make that work, or are there fundamental reasons why it is not possible? Here is my use case repo, at the point of the ugly workaround I'm having to do: https://github.com/cirosantilli/linux-kernel-module-cheat/blob/a14c95346cfd9d2e7b2e475b0981aa71d819c20b/configure#L23 Some more context: https://stackoverflow.com/questions/2144406/git-shallow-submodules/47374702#47374702 This would make some embedded people happy.