Did you know that git commands split into porcelain(used usally by the dev) and plumbing(used by git itself under the hood) commands. E.g git add, git commit, git log those are all PORCELAIN commands. E.g of a PLUMBING command is git cat-file -p <hash>, this command shows:
- tree(git's way of storing a directory or blob(git's way of showing a file)
- parent
- author
- committer
Git doesn't store diffs, it stores full snapshots of every file on each commit. It's smart enough to deduplicate unchanged files, so identical content across commits only gets stored once. Verified it myself with git cat-file, same file, same hash, across commits.