Version Control
A system recording the history of a project's files, enabling branching, merging, and recovery.
Version control records the successive states of a project so that any past state can be recovered, changes can be attributed, and independent work can proceed in parallel and be recombined. Git is the near-universal implementation.
Git's model is worth understanding directly, because most confusion with it comes from working against the model rather than with it. A repository is a content-addressed object store: every file version, directory tree, and Commit is stored under the hash of its contents, and a commit records a tree plus its parents. Branches are just movable pointers into that graph. Nothing is ever modified in place; operations that appear to rewrite history create new objects and move pointers.
Two consequences matter constantly. Anything committed is recoverable, even after a branch is deleted or a reset appears to destroy it — the objects persist until garbage collection. Anything not committed is not protected, which is why a destructive command in a shared working directory is genuinely destructive and why committing frequently is a safety practice rather than a bookkeeping one.
History is also a document. It is the durable answer to why is this here, which is what makes a change description part of the deliverable rather than paperwork; see Provenance.
See also12
Git Worktree
An additional working directory attached to one repository, each on its own branch.
Version Control & Delivery15 connections
Branching Model
The convention governing what branches exist, what they mean, and how work reaches production.
Version Control & Delivery18 connections
Three-Way Merge
Combining two lines of work by comparing both against their common ancestor.
Version Control & Delivery17 connections
Hash Function
A function mapping arbitrary input to a fixed-size digest, used for identity, integrity, and addressing.
Systems & Tooling30 connections
Monorepo
Several packages developed in one repository with shared tooling and atomic cross-package changes.
Systems & Tooling16 connections
Regression
A previously working behavior that a change has broken.
Method23 connections
Squash Merge
Collapsing a branch's commits into one before merging, trading granularity for a clean main history.
Version Control & Delivery24 connections
Pull Request
A proposal to merge a branch, carrying review, automated checks, and the discussion around it.
Version Control & Delivery25 connections
Gitignore
The file of patterns telling Git which files to leave untracked, such as build output, dependencies, editor clutter, and local secrets, along with the traps of files that were already tracked and secrets already committed.
Version Control & Delivery12 connections
Timeline
Laying events out along a line in order of time, a form that seems obvious but was invented in the eighteenth century and still forces hard choices about scale, density, and what counts as an event.
Design & Interface4 connections
Detached HEAD
The Git state in which the current checkout points directly at a commit rather than a branch, harmless for looking around but a trap for new work, since commits made there belong to no branch and can quietly disappear.
Version Control & Delivery11 connections
Staging Area
The intermediate snapshot in Git between the working files and the next commit, which lets a developer choose exactly which changes go into each commit, down to individual lines.
Version Control & Delivery15 connections
Linked from22
- Artifact RepositoryVersion Control & Delivery
The store for the built outputs of software, such as packages, container images, and binaries, so the exact thing that was tested is the exact thing that ships.
- Atomic CommitVersion Control & Delivery
A commit containing exactly one logical change, complete and independently sound.
- Binary SearchComputation & Algorithms
Finding a value in a sorted range by repeatedly discarding half of it.
- Branching ModelVersion Control & Delivery
The convention governing what branches exist, what they mean, and how work reaches production.
- CommitVersion Control & Delivery
A recorded snapshot of a project with a message explaining it.
- Commons-Based Peer ProductionMeaning & Society
Large-scale production coordinated by modular tasks and volunteer contribution rather than price or hierarchy.
- Conventional CommitsVersion Control & Delivery
A lightweight convention giving commit messages a machine-readable type and scope.
- Git LFSVersion Control & Delivery
A Git extension that stores large binary files on a separate server and keeps small pointer files in the repository, so history stays light enough to clone.
- Git WorktreeVersion Control & Delivery
An additional working directory attached to one repository, each on its own branch.
- GitOpsVersion Control & Delivery
Using a Git repository as the live source of truth for deployed state, reconciled continuously by an in-cluster agent.
- Hash FunctionSystems & Tooling
A function mapping arbitrary input to a fixed-size digest, used for identity, integrity, and addressing.
- Infrastructure as CodeVersion Control & Delivery
Defining infrastructure in version-controlled files instead of configuring it by hand through a console.
- MonorepoSystems & Tooling
Several packages developed in one repository with shared tooling and atomic cross-package changes.
- Path DependenceMethod
Outcomes shaped by the sequence of past choices rather than by present merit.
- Permissive LicenseVersion Control & Delivery
A license family that imposes little beyond attribution and a warranty disclaimer.
- ProvenanceMethod
The recorded origin of a change or a claim — who made it, when, and on what evidence.
- RebaseVersion Control & Delivery
Replaying a branch's commits onto a new base, producing new commits with the same changes.
- RegressionMethod
A previously working behavior that a change has broken.
- Squash MergeVersion Control & Delivery
Collapsing a branch's commits into one before merging, trading granularity for a clean main history.
- Three-Way MergeVersion Control & Delivery
Combining two lines of work by comparing both against their common ancestor.
- TimelineDesign & Interface
Laying events out along a line in order of time, a form that seems obvious but was invented in the eighteenth century and still forces hard choices about scale, density, and what counts as an event.
- UndoDesign & Interface
Letting people reverse what they just did, which makes interfaces safe to explore and usually beats asking "are you sure?" before every action.