Robots Atlas>ROBOTS ATLAS
Tooling

Git

2005ActivePublished
Key innovation
A distributed version-control model based on full content-addressed snapshots hashed with SHA-1 rather than incremental deltas, giving every client a complete, cryptographically verifiable copy of the entire repository history.
Category
Tooling
Abstraction level
System
Operation level
Tooling
Use cases
Source-code version controlTeam collaboration on softwareBranching and merging changesCode review and pull requestsCI/CD and release automationTracking changes in documentation and configuration data

How it works

Git stores data as a series of snapshots of the project: on every commit it records the state of all files at that moment, and for unchanged files it keeps only a reference to the previous version. Every file and directory is checksummed with a SHA-1 hash (a 40-character hexadecimal string) and addressed by that checksum. Files exist in three main states — modified, staged and committed — corresponding to the working tree, the staging area (index) and the Git directory. Branches are lightweight, movable pointers to commits, which makes branching and merging cheap operations. Repositories that share history are synchronized with push/pull/fetch operations.

Problem solved

It addresses the limitations of centralized version-control systems: dependence on a server and network, slow branch operations and difficult collaboration on non-linear, parallel workflows. It also guarantees history integrity through content addressing with cryptographic hashes.

Components

RepositoryLocal, complete source of version history

The .git directory holding the project's full history, objects and references. Every clone is a self-contained, complete repository.

Commit object (snapshot)Immutable point in history

A committed state of the project at a point in time, addressed by a SHA-1 hash, pointing to a file tree and parent commit(s).

Staging area (index)Preparing changes before committing

An intermediate area where changes destined for the next commit are marked, separating the working tree from committed history.

BranchIndependent line of development

A lightweight, movable pointer to a commit, enabling cheap branching and parallel, non-linear work.

Remote repositoryAsynchronous collaboration between repositories

A repository on another machine sharing history, synchronized via push/pull/fetch operations.

Evolution

2005
Git is created
Inflection point

Linus Torvalds creates Git for version control of the Linux kernel; first release on 7 April 2005.

2005
Junio Hamano becomes maintainer

Linus Torvalds hands over Git maintenance to Junio Hamano, who remains the project's lead maintainer.

2008
GitHub is founded
Inflection point

GitHub (founded 2008) provides Git repository hosting, greatly accelerating mass adoption of Git.

Hyperparameters (configurable axes)

Object hash algorithmHigh

Hash function used to address objects: historically SHA-1, with experimental support for SHA-256.

Default branch nameLow

Name of the branch created when a repository is initialized (e.g. master or main).

Hardware requirements

Primary

Git is a CPU-based tool that runs on any POSIX machine (Linux, macOS) and Windows; it requires no specialized hardware.