{"id":498,"date":"2026-09-06T00:07:50","date_gmt":"2026-09-06T03:07:50","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-do-git\/"},"modified":"2026-09-08T07:57:21","modified_gmt":"2026-09-08T10:57:21","slug":"a-historia-do-git","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-git\/","title":{"rendered":"The history of Git: ten days that changed code"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro desenhando o ramo do Git no quadro branco, ao lado do losango do projeto\" src=\"\/wp-content\/uploads\/2026\/09\/git-historia-v2.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<p>In April 2005, the Linux kernel was left without a version control system. The proprietary BitKeeper had taught it the distributed workflow \u2014 and Larry McVoy revoked the license after Andrew Tridgell reverse-engineered the protocol. <a href=\"\/en\/2026\/09\/a-historia-de-linus-torvalds\/\">Linus Torvalds<\/a> 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 \u2014 and Linus had already handed off maintenance in July 2005.<\/p>\n<p><!-- more --><\/p>\n<p>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.<\/p>\n<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5em 0\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/sCr_gb8rdEI\" title=\"Two decades of Git: A conversation with creator Linus Torvalds \u2014 GitHub\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen style=\"position:absolute;top:0;left:0;width:100%;height:100%;border:0\"><\/iframe>\n<\/div>\n<h2>Before: patches, tarballs, and BitKeeper<\/h2>\n<p>From 1991 to 2002, the kernel moved through email: patches and compressed archives. In 2002, the project adopted BitMover's BitKeeper. Linus hated CVS \u2014 slow, centralized, miserable merging. BitKeeper was \u201cthe first SCM worth using\u201d: 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.<\/p>\n<p>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.<\/p>\n<h2>April 2005: ten days and the first commit<\/h2>\n<p>April 3: starts writing. April 6: announces it. April 7: Git starts hosting itself \u2014 the initial commit has 1.244 lines and the description \u201cthe information manager from hell\u201d. 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.<\/p>\n<p>The name is a British joke (<em>git<\/em> = an obnoxious person) and, in the commit itself, a backronym: <em>global information tracker<\/em>. SHA-1 was not \u201ccryptographic security\u201d; 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.<\/p>\n<p>In May 2007, he went to Google to explain the beast. The talk remains the best \u201cwhy it is not CVS\u201d explanation out there:<\/p>\n<div style=\"position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5em 0\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/4XpnKHJAok8\" title=\"Tech Talk: Linus Torvalds on git \u2014 Google 2007\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen style=\"position:absolute;top:0;left:0;width:100%;height:100%;border:0\"><\/iframe>\n<\/div>\n<h2>Junio Hamano, July 26, 2005<\/h2>\n<p>Linus never wanted to maintain Git. \u201cThe moment someone I trust comes along, I go back to the kernel.\u201d 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: <code data-no-translation=\"\">merge<\/code>, <code data-no-translation=\"\">blame<\/code>, <code data-no-translation=\"\">log<\/code>, <code data-no-translation=\"\">commit<\/code>, <code data-no-translation=\"\">pull<\/code>, <code data-no-translation=\"\">status<\/code>. The rest is Junio's project, along with hundreds of contributors.<\/p>\n<p>Between 2007 and 2010, the complaint (\u201cwhy are the names different from CVS?\u201d) 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 \u2014 it is in the social layer above it. Without hash-addressed objects, that layer would not exist.<\/p>\n<h2>What Git is, in one sentence<\/h2>\n<p>It is not a file delta. It is a snapshot database: blob, tree, commit, tag \u2014 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 <a href=\"\/en\/2026\/09\/linux-35-anos\/\">Linux turns 35<\/a>; the Portuguese cheatsheet is in <a href=\"\/en\/2017\/04\/git-simples-e-rapido\/\">Git made simple and fast<\/a>.<\/p>\n<h2>2026: Git 2.55, Rust, and the road to 3.0<\/h2>\n<p>On June 29, 2026, Junio announced Git 2.55: Rust enabled by default during compilation (you can still opt out with <code data-no-translation=\"\">NO_RUST<\/code>; in 3.0 it may become mandatory), the experimental subcommand <code data-no-translation=\"\">git history<\/code> (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 \u2014 not a new Git, the same on-disk format, less unsafe C.<\/p>\n<p>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 \u201cwas not going to be big\u201d got a sibling that, this time, he admitted writing because he needed it.<\/p>\n<h2>Wrap-up<\/h2>\n<p>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 \u2014 clone, branch, merge, hash.<\/p>\n<p>For everyday commands: <a href=\"\/en\/2017\/04\/git-simples-e-rapido\/\">Git made simple and fast<\/a>. For its author: <a href=\"\/en\/2026\/09\/a-historia-de-linus-torvalds\/\">the history of Linus Torvalds<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>In April 2005, the Linux kernel lost its version control system. The proprietary BitKeeper had taught developers the distributed workflow \u2014 and Larry McVoy withdrew 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, content-addressed \u2026 <a title=\"The history of Git: ten days that changed code\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-git\/\" aria-label=\"Read more about A hist\u00f3ria do Git: dez dias que mudaram o c\u00f3digo\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,46,2,111],"tags":[199,48,49,200,185],"class_list":["post-498","post","type-post","status-publish","format-standard","hentry","category-desenv","category-devops","category-linux","category-opensource","tag-bitkeeper","tag-git","tag-github","tag-junio-hamano","tag-linus-torvalds"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/498","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=498"}],"version-history":[{"count":3,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/498\/revisions"}],"predecessor-version":[{"id":1159,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/498\/revisions\/1159"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}