Not possible, due to the way how git works:
It's a merkle tree of commits, where each of these commits point to a file tree (content-addressed by the hash) and the previous commit
No, creating a git commit merely requires knowing the current state of all the files and the hash of the previous commit. You don't need the actual contents of the previous commits.
https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
Pushing from a shallow clone to a remote is more complex, but is supported in modern git versions.
https://stackoverflow.com/a/6900428