I couldn't make heads or tails of Git for the longest time, until it dawned on me that my mental model of what it was, was completely wrong.
I thought it was a very sophisticated system of file version management that very carefully measured deltas between versions of files, and stored only those deltas. If you believe this, you'll experience nothing but grief with Git, because that's not what it is.
It actually stores everything you tell it to, and can optionally compress it down to deltas. The storage at the root is all content based, instead of file name based, so if you have 5000 different names for the exact same 1 megabyte of stuff, you'll only store it once, along with all the names (and other metadata it uses internally).