Git
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
The .git directory holding the project's full history, objects and references. Every clone is a self-contained, complete repository.
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).
An intermediate area where changes destined for the next commit are marked, separating the working tree from committed history.
A lightweight, movable pointer to a commit, enabling cheap branching and parallel, non-linear work.
A repository on another machine sharing history, synchronized via push/pull/fetch operations.
Evolution
Linus Torvalds creates Git for version control of the Linux kernel; first release on 7 April 2005.
Linus Torvalds hands over Git maintenance to Junio Hamano, who remains the project's lead maintainer.
GitHub (founded 2008) provides Git repository hosting, greatly accelerating mass adoption of Git.
Hyperparameters (configurable axes)
Hash function used to address objects: historically SHA-1, with experimental support for SHA-256.
Name of the branch created when a repository is initialized (e.g. master or main).
Hardware requirements
Git is a CPU-based tool that runs on any POSIX machine (Linux, macOS) and Windows; it requires no specialized hardware.