The Birth of Git
A Crisis Creates a Revolution
Why it matters
Every tool has a story. Git was born from a crisis—and that crisis shaped everything about how Git works today. Understanding the ‘why’ helps you understand the ‘how’.
Key concepts
- BitKeeper — Proprietary distributed VCS that inspired Git’s design
- Distributed VCS — Every clone has complete history—no central server needed
- SHA-1 — Cryptographic hash ensuring data integrity
- Snapshots — Git stores complete file states, not differences
The idea
The BitKeeper Crisis of 2005
In 2002, the Linux kernel—the largest open-source project in the world—was managed using BitKeeper, a proprietary version control system. It was fast, distributed, and worked beautifully for Linux’s thousands of contributors.
Until April 2005.
BitMover, the company behind BitKeeper, revoked the free license after a developer allegedly reverse-engineered their protocol. Suddenly, thousands of Linux developers were stranded. The kernel’s development ground to a halt.
Linus’s Three Choices
Linus Torvalds faced three options:
1. Pay for BitKeeper Rejected. Open source philosophy demanded open tools.
2. Switch to CVS or Subversion Rejected. “CVS is not even worth talking about. If you like it, you are demented.” Subversion was “designed to be a better CVS” which meant it inherited CVS’s fundamental flaws.
3. Build something better ✓ Chosen. In just 10 days, Linus wrote the first version of Git.
The Design Philosophy
Git wasn’t designed to be user-friendly. It was designed to be:
- Correct: Data integrity via SHA-1 hashes. Corruption is impossible to hide.
- Fast: “If it takes more than a second, it’s broken”
- Distributed: Every developer has the full history. No single point of failure.
- Simple branching: Linux needed thousands of parallel experiments.
The Name
Linus named it “Git”—British slang for an unpleasant person. As he explained: “I’m an egotistical bastard, and I name all my projects after myself. First Linux, now Git.”
(He later suggested it could stand for “Global Information Tracker” if you’re feeling generous.)
Walkthrough
Timeline
| Date | Event |
|---|---|
| 2002 | Linux adopts BitKeeper |
| April 3, 2005 | BitKeeper license revoked |
| April 7, 2005 | Linus starts writing Git |
| April 16, 2005 | Git manages Linux kernel (10 days!) |
| June 16, 2005 | Linux 2.6.12 released via Git |
| December 2005 | Git 1.0 released |
Design Goals (from Linus)
- Speed - Subsecond operations for everything
- Simple design - Data model is elegant
- Strong support for parallel development - Thousands of branches
- Fully distributed - No central server required
- Handle large projects efficiently - Linux has millions of lines
Git’s Core Insight
Previous systems tracked changes (deltas). Git tracks snapshots.
CVS/SVN: Δ1 → Δ2 → Δ3 → Δ4
Git: S1 S2 S3 S4 (full snapshots, compressed)
This makes branching and merging trivial—you’re comparing complete states, not reconstructing history.
Key takeaways
- Git was built in 10 days to solve a real crisis
- Designed for correctness and speed over user-friendliness
- Distributed = no single point of failure
- Snapshots (not deltas) enable fast branching
Going deeper
The Linux Development Model: Linux has a ‘lieutenant’ system. Linus doesn’t review every patch—subsystem maintainers do. Git’s distributed model perfectly supports this hierarchy. Each maintainer has their own tree, pulls from contributors, and Linus pulls from maintainers.
Impact: Today, Git powers 90%+ of software development. GitHub has 100M+ developers. Git’s success influenced distributed systems thinking across the industry.