Commit
Noun · Verb · Open Source
Definitions
Commit in version control is a snapshot of all tracked files in a repository at a specific point in time, along with a message describing what changed and why. Each commit is identified by a unique hash (in Git, a SHA-1 or SHA-256 hash) and records the author, timestamp, parent commit(s), and the exact changes (diff) from the previous state. Commits form a directed acyclic graph that represents the complete history of a project, enabling developers to trace when and why every line of code was changed, revert to any previous state, and understand the evolution of the codebase. Good commit practices include making small, focused commits that address a single concern, writing clear commit messages with a concise subject line and explanatory body, and committing frequently. Conventional commit formats and tools like commitlint help maintain consistent messaging. The discipline of crafting meaningful commits is a hallmark of professional software development.
In plain English: Saving a set of code changes with a description — like a checkpoint in a video game that you can always go back to.
Conventional Commits (conventionalcommits.org) standardizes commit messages into types like feat:, fix:, docs:, refactor:, and BREAKING CHANGE:. This enables automated changelog generation, semantic versioning, and makes git history actually useful.
Example: 'feat: add OAuth2 login flow' tells you everything. 'update stuff' tells you nothing. Use conventional commits.
Source: best practice / conventional commits
Etymology
- 1970s
- Database terminology uses 'commit' for making transactions permanent, from Latin committere (to entrust)
- 2005
- Git's commit model — snapshots of the entire repository — makes the concept central to every developer's workflow
- 2010s
- Conventional Commits specification emerges, standardizing commit message formats for automated tooling
Origin Story
The snapshot that turned 'save' into a permanent record
The **commit** concept in version control dates to early systems like SCCS (1972) and RCS (1982), but the term became universal through CVS, Subversion, and especially Git. In database terminology, 'commit' meant making a transaction permanent (ACID's Durability). Version control borrowed the word for making changes permanent.
Git's commit model, designed by Linus Torvalds in 2005, was revolutionary: each commit is a snapshot of the entire repository, identified by a SHA-1 hash. Commits form a directed acyclic graph (DAG), enabling cheap branching and powerful history manipulation.
The commit message became a minor art form. 'Fixed stuff' and 'WIP' are universally derided. Conventional Commits (feat:, fix:, chore:) and Chris Beams' 'How to Write a Git Commit Message' tried to impose discipline. The best advice remains: write the message for the person debugging this at 3 AM -- it might be you.
Coined by: Version control / database community
Context: SCCS 1972, RCS 1982, Git 2005
Fun fact: The most famous commit message in history might be Linus Torvalds' initial Linux kernel commit: 'Initial revision of "Linux"' (1991). The most infamous is probably the thousands of commits across open source simply reading 'fix' with no further explanation.