Git is a content-addressed object database with a version control interface on top. There are four object types — blobs for file content, trees for directory structure, commits that point at a tree and at parent commits, and tags — and every one is named by a hash of what it contains. Nothing is stored as a diff at the logical level; a commit is a full snapshot, and the compression that makes that affordable happens later, when loose objects are packed into packfiles with delta encoding.
Everything user-facing sits on that base. Branches and tags are refs: files under .git/refs, or entries in packed-refs, containing a hash. HEAD is a ref pointing at a branch. The index — the staging area — is a binary file holding the tree you are composing for the next commit. Merge, rebase, reset, revert, cherry-pick and stash are all operations that create objects and move refs, which is why the reflog can recover almost anything: the objects usually still exist, only the ref moved, and garbage collection has not yet run.
Distribution is a separate mechanism again. A remote is a URL plus refspecs; fetch negotiates which objects the other side lacks and transfers a packfile; push does the same in reverse and is refused when it would not fast-forward. Once that is clear, the operational features fall into place — shallow and partial clone, sparse checkout and worktrees for repositories too large to check out whole, Git LFS for binaries that should never enter a packfile, submodules and subtrees for composition, and hooks for enforcing policy locally or on the server.
Why this skill matters now
Git stopped being a skill anyone lists and became infrastructure everyone depends on, which is exactly why the gaps hurt. Teams do not lose days to not knowing how to commit; they lose days to a force-push that overwrote a shared branch, a rebase that duplicated forty commits, a merge conflict resolved by deleting the confusing half, or a repository that takes eleven minutes to clone because someone committed a build output tree in 2019.
The stakes rose in two specific ways. Credentials in history became a security incident with a defined remediation — rewrite, rotate, force-update every fork — rather than an embarrassment, and doing that rewrite correctly on a live repository requires knowing exactly what it does to everyone else's clone. And review became the delivery bottleneck in most organisations, so branching model, review latency and merge strategy now show up directly in delivery metrics.
Repository scale is the third pressure. Monorepos, machine learning artifacts, media, firmware images and simulation data have pushed many repositories past the size where a naive clone is reasonable, and the tooling that answers it — partial clone, sparse checkout, LFS, maintenance and commit-graph — is not something people pick up by osmosis. The demand is for engineers who understand the model well enough to repair, restructure and scale a repository, not just to use one.