Since 2002, Linux kernel development had used the proprietary system BitKeeper, granted free of charge to the community by BitMover on condition that it not be reverse-engineered. In April 2005, Andrew Tridgell, the developer of Samba, undertook a reverse-engineering effort on the BitKeeper protocol, which led BitMover to withdraw its free licence. Linus Torvalds thus found himself without a tool to manage a kernel of several million lines and thousands of contributors. Rejecting the existing alternatives — CVS, Subversion, Perforce — which he considered too slow and incapable of supporting truly decentralised distribution, he decided within a week to design his own system. He began coding on 3 April 2005. The first version of Git was operational by 7 April 2005; the Linux 2.6.12-rc2 kernel was managed with Git on 16 April. Torvalds set out three goals: speed, simplicity of distributed design and strong cryptographic integrity of revisions. Each version is identified by a SHA-1 hash, the graph of versions is a Merkle tree, and every contributor has a complete local repository allowing offline work, lightweight branches and sophisticated merges. In July 2005 Torvalds handed over maintenance to Junio Hamano, who has led the project ever since. The fundamental commands (commit, branch, merge, rebase, pull, push) quickly stabilised. Adoption has been massive. GitHub, launched in April 2008 by Tom Preston-Werner, Chris Wanstrath and PJ Hyett, made Git the backbone of worldwide open source and propelled new practices — pull requests, public forks, collaborative code review. GitLab (2011) and Bitbucket followed suit. In 2018, Microsoft acquired GitHub for 7.5 billion dollars. Git now powers virtually every software project, from start-ups to cloud giants, and structures contemporary development culture, from continuous integration to DevOps. Linus Torvalds's second major project after Linux, Git embodies the same conviction: an open, distributed architecture always surpasses centralised systems.
2005
Software / Version control system
Git