The history of Git: ten days that changed code

Mascote do LinuxPro desenhando o ramo do Git no quadro branco, ao lado do losango do projeto

In April 2005, the Linux kernel was left without a version control system. The proprietary BitKeeper had taught it the distributed workflow — and Larry McVoy revoked the license after Andrew Tridgell reverse-engineered the protocol. Linus Torvalds did not return to tarballs and patches. In about ten days, he wrote Git: tree snapshots, hash-addressed content, fast enough for the kernel. Twenty-one years later, Git 2.55 is still what almost every repository on the planet uses — and Linus had already handed off maintenance in July 2005.

In 2025, to mark 20 years since the first commit, GitHub sat down with him. The surprise, he says, was not that he kept using it. It was that the entire world had copied the solution to his own problem.

Before: patches, tarballs, and BitKeeper

From 1991 to 2002, the kernel moved through email: patches and compressed archives. In 2002, the project adopted BitMover's BitKeeper. Linus hated CVS — slow, centralized, miserable merging. BitKeeper was “the first SCM worth using”: it taught the workflow Git still follows. The free kernel license lasted until 2005. McVoy accused Tridgell (Samba) of reverse engineering. The exemption ended. Nobody wanted to return to tarballs.

The criteria Linus wrote down ruled out everything available: speed, simple design, thousands of parallel branches, genuinely distributed operation, and handling the kernel's volume without corrupting history. He had been thinking about it since late 2004. The code came quickly because the design was already in his head.

April 2005: ten days and the first commit

April 3: starts writing. April 6: announces it. April 7: Git starts hosting itself — the initial commit has 1.244 lines and the description “the information manager from hell”. April 16: first kernel commit in Git. April 18: first branch merge. April 29: 6,7 patches per second in the kernel tree. June 16: Git manages release 2.6.12.

The name is a British joke (git = an obnoxious person) and, in the commit itself, a backronym: global information tracker. SHA-1 was not “cryptographic security”; it was a corruption detector. In 2026, SHA-256 is already an option; the default is still SHA-1. Linus keeps saying the switch was never the point.

In May 2007, he went to Google to explain the beast. The talk remains the best “why it is not CVS” explanation out there:

Junio Hamano, July 26, 2005

Linus never wanted to maintain Git. “The moment someone I trust comes along, I go back to the kernel.” Junio Hamano (gitster) took the baton on July 26, 2005 and never let go. Version 1.0 came out on December 21 of the same year. To this day, Linus uses a handful of commands: merge, blame, log, commit, pull, status. The rest is Junio's project, along with hundreds of contributors.

Between 2007 and 2010, the complaint (“why are the names different from CVS?”) became the opposite: a generation that had never used SCM and for whom Git was the default. GitHub opens in 2008; GitLab, Bitbucket, Gitea, Forgejo. The pull request is not in Git — it is in the social layer above it. Without hash-addressed objects, that layer would not exist.

What Git is, in one sentence

It is not a file delta. It is a snapshot database: blob, tree, commit, tag — each an object, each a hash. A branch is a pointer. A merge is a commit with two parents. You clone the entire repository, not a checkout. That is why the kernel, Android, Chromium, and your README fit the same model. The Unix/Linux history on this blog is in Linux turns 35; the Portuguese cheatsheet is in Git made simple and fast.

2026: Git 2.55, Rust, and the road to 3.0

On June 29, 2026, Junio announced Git 2.55: Rust enabled by default during compilation (you can still opt out with NO_RUST; in 3.0 it may become mandatory), the experimental subcommand git history (reword, split, fixup without disturbing the working tree), native fsmonitor on Linux, push to a group of remotes. SHA-1 and SHA-256 are starting to interoperate. Git 3, discussed at FOSDEM by Patrick Steinhardt, is the next cut — not a new Git, the same on-disk format, less unsafe C.

The wave of AI agents is straining GitHub; the Git protocol itself remains the same as in 2005. Linus, on kernel 7.x, still runs the merge window with Git and email. The hobby that “was not going to be big” got a sibling that, this time, he admitted writing because he needed it.

Wrap-up

Two artifacts from the same Finn: the kernel and Git. He never let go of the first. He let go of the second in four months, and the whole world adopted it. Junio Hamano reaches 21 years as maintainer in 2026. The orange diamond on the cover is the same as in 2005. So is the workflow — clone, branch, merge, hash.

For everyday commands: Git made simple and fast. For its author: the history of Linus Torvalds.