Timeline of Git
Git from its creation for Linux development in 2005 to reftable storage in 2024: distributed workflows, hosting, large repositories, command design, and changes to its storage model.
- Category
- Engineering & Technology
- Events
- 15 events 2005–2024
- Generated
- by gpt-6-astra
2005: Torvalds creates Git for Linux development
Linus Torvalds began Git after the Linux kernel community lost free access to BitKeeper. Git used local repositories and content-addressed objects to support distributed work, letting developers inspect history and make commits without a central server.
Wikipedia2005: Hamano becomes Git’s maintainer
Linus Torvalds handed maintenance to Junio Hamano in July. The transfer established the long-running maintainer role that guided Git beyond its initial development sprint for the Linux kernel.
Wikipedia2005: Git reaches version 1.0
Junio Hamano released Git 1.0 in December. The project had progressed from a tool created for an immediate kernel-development need into a version-control system with a growing set of commands and contributors.
Wikipedia2008: GitHub launches repository hosting
GitHub launched a service that combined Git repositories with a web interface for collaboration. Hosting and social features helped developers discover projects and contribute changes while Git itself remained an independent, distributed tool.
Wikipedia2011: GitLab offers self-hosted collaboration
Dmytro Zaporozhets and Valery Sizov started GitLab as an open-source collaboration application around Git. Organizations could host repositories and review work on their own infrastructure instead of relying entirely on a public hosting service.
Wikipedia2014: Git 2.0 changes the default push behavior
Git 2.0 made simple the default push mode, favoring the current branch and checking its upstream name. The change reduced the chance that an unqualified push would update several matching branches unintentionally.
Wikipedia2015: Git LFS separates large files from history
GitHub introduced Git Large File Storage, an open-source extension that stored large file contents separately while committing small pointer files. The design made repositories containing assets such as video and datasets more manageable without changing ordinary Git objects.
Wikipedia2015: Git adds linked working trees
Git 2.5 introduced experimental support for multiple working trees sharing one repository. Developers could check out different branches in separate directories without duplicating the entire object database or repeatedly interrupting work on one branch.
Wikipedia2017: Microsoft virtualizes very large Git repositories
Microsoft introduced its Git Virtual File System to work with repositories on the scale of the Windows source tree. Files could be downloaded as needed, reducing the cost of treating a very large repository as a fully populated local checkout.
Wikipedia2018: Commit graphs accelerate history queries
Git 2.18 introduced an optional commit-graph file that cached commit relationships and related metadata. Commands could traverse history more efficiently without repeatedly unpacking and parsing individual commit objects.
Wikipedia2019: Git separates switching from restoring files
Git 2.23 introduced the experimental switch and restore commands. They separated branch switching from restoring file contents, giving users more focused alternatives to the several distinct operations handled by checkout.
Wikipedia2020: Sparse checkout gains a dedicated command
Git 2.25 added a sparse-checkout command and a directory-oriented cone mode. Sparse working trees already existed, but the new interface made it easier to work on selected parts of large repositories and enabled faster pattern matching.
Wikipedia2020: Git adds experimental SHA-256 repositories
Git 2.29 supported experimental repositories using the 256-bit Secure Hash Algorithm, SHA-256, for object identifiers. Existing repositories continued to use SHA-1, and direct interoperability between the two formats was still unfinished.
Wikipedia2021: Git adopts a new default merge strategy
Git 2.34 made the ort strategy the default for merging two branches, replacing recursive. The new implementation improved merge performance and handling of difficult cases such as renames, without changing the basic branch-and-merge workflow.
Wikipedia2024: Git offers reftable reference storage
Git 2.45 integrated reftable as an optional backend for branch and tag references. The table-based format addressed scaling and update behavior in repositories with many references; it did not replace Git’s content-addressed object storage.
Wikipedia