Blog / Git

The Git Mental Model: Stop Memorizing, Start Understanding

Published on Jan 03, 2026

Git explained through snapshots, sticky notes, and a safety net that makes it impossible to lose work.

Most people use Git every day, committing, pushing, and pulling, until something breaks. Then, they find themselves frantically Googling how to undo a mistake at 11:00 PM, copying commands from Stack Overflow, and praying they don't make it worse.

The uncomfortable truth is that many experienced developers don't actually understand Git. They memorize the commands, but they don't know what's happening underneath the hood. To never fear Git again, you have to forget the commands for a moment and understand the logic.

C1 C2 C3 Commit Chain Each commit points to its parent

1. The Commit: The Snapshot

Git is essentially a database, and the fundamental unit of that database is the commit.

Many people think a commit is just a list of the changes you made. That's incorrect. A commit is a snapshot, a complete photograph of your entire project at one moment in time. It contains:

📸 A pointer to the snapshot: Every file exactly as it existed right then.
📝 Metadata: Who created it, when, and the message describing it.
👉 A pointer to the parent: The commit that came directly before it.

This creates a chain. Each commit points backward to its parent, all the way to the very first commit (the "origin"), which has no parent. This structure is called a DAG (Directed Acyclic Graph). It's like a family tree where children know their parents, but parents never know their future children and there are never any loops.

2. The Branch: The Sticky Note

One of the biggest hurdles for beginners is thinking of branches as heavy, complex folders. In reality, a branch is just a pointer, a tiny "sticky note" containing the ID (hash) of a specific commit.

C1 C2 C3 main feature Branches = Sticky Notes Just pointers to commits

When you create a "feature" branch, Git doesn't copy your files. It just creates a new sticky note and puts it on the same commit you're currently standing on. As you make new commits, Git moves that sticky note forward to the latest one. This is why creating or switching branches is instant; you aren't moving files, you are just moving labels.

3. Understanding "HEAD"

If branches are sticky notes on commits, how does Git know where you are? Meet HEAD.

HEAD is Git's way of tracking your current location. Usually, HEAD points to a branch (like "main"), and that branch points to a commit. When you switch branches, HEAD simply moves to point at a different sticky note.

HEAD main feature C3 C4 HEAD → branch → commit

Sometimes, you might enter a "Detached HEAD State." This sounds scary, but it just means HEAD is pointing directly to a commit instead of a branch label. If you make changes here and switch away without creating a branch to "hold" them, those commits become orphans and eventually disappear.

4. The Three Areas of Git

To understand how to move work around, you must visualize the three layers where your code lives:

📁 Working Directory

The actual files you see and edit in your code editor.

⏳ Staging Area

A "waiting room" where you prepare what will go into your next snapshot.

💾 Repository

The permanent database where snapshots are stored forever.

5. Undo vs. Redo: Checkout, Reset and Revert

Because there are three layers, "undoing" things requires different tools depending on what you want to achieve:

🔍 Checkout: This moves your "view" (HEAD). It's safe and doesn't change your history.
🔄 Reset: This moves a branch label. Soft keeps changes staged, Hard wipes everything.
↩️ Revert: Safest for shared work. Creates new commit that undoes previous one.

6. The Magic of Rebase

When you want to combine work from two branches, you have two choices: Merge or Rebase.

Merge: Two Parents

C1 C2 Merge

Rebase: Linear History

C1 C2' C3'

Rebasing takes your commits and "replays" them on top of a new starting point, creating brand new commits with clean, linear history.

7. The Emergency Room: The Reflog

What happens if you run a "Hard Reset" and realize you accidentally deleted the wrong thing? Git has a secret journal called the Reflog. It records every single place HEAD has pointed in the last few months. Even if a commit is no longer on a branch, it still exists in the database.

Git is almost impossible to break, and even harder to truly lose work in.

Final Thought: Git isn't a collection of magic spells to be memorized. It's a logical system of snapshots and pointers. Once you stop worrying about the commands and start visualizing the graph, you'll never fear Git again.