Concepts, explained more than one way
Written by a person. Last read by a person on 2026-09-05, 3 days ago. Its facts were checked by the eval suite on 2026-09-07.
A term here is not landing the way it is written, you learned this idea somewhere else and the words do not line up, or you want to check that your understanding matches what the rest of the documentation assumes.
Every concept here has one definition and several explanations.
That split is deliberate. The definition is a claim: the documentation is either right about it or wrong, and it is checked like every other claim. The explanations are routes to the same place, and they are plural because readers arrive from different directions. Someone coming from Subversion and someone who has never used version control need different ways in, and neither explanation is the true one.
If two people learn something from two different tutorials, they are both correct. What matters is that they end up able to talk to each other.
How an alternative earns its place
Not by being liked. Each concept publishes observable criteria — what a reader who understands it can do — and an explanation is admitted only if someone who read only that explanation could meet them.
That bar exists because the failure it prevents is the worst one available: an explanation that is enjoyable, memorable, and installs a wrong model. A reader with a wrong model that works is harder to help than a reader who is stuck, and popularity selects for exactly that.
Commit
Definition. A commit is an entry in a project's history: a set of changes recorded together, with a message saying why they were made. It is created on your own computer and is visible to nobody else until it is pushed.
What understanding this looks like
- Can say what a commit records, without using the word "save"
- Can say who can see a commit before it is pushed
- Can explain why a commit has a message
- Can predict that committing twice does not send anything anywhere
If you have never used version control
Written for: first-time · provenance human · checked 2026-09-05
Think of it as writing an entry in a logbook rather than pressing save. Your file is already safe on disk the moment your editor writes it; the commit is a separate act, where you say "these changes belong together, and here is why I made them". The logbook lives on your computer. Nobody else reads it until you hand it over.
If you are coming from Subversion, or from a shared drive
Written for: from-another-tool · provenance human · checked 2026-09-05
In a centralised system, committing and publishing are the same act: you commit to the server and everyone has it. Here they are two acts, and the gap between them is where most of the confusion lives. A commit is local. You can make twenty of them on a plane. What your colleagues see does not change until you push, which is a separate command you have to run on purpose.
If you want the precise version
Written for: precise · provenance human · checked 2026-09-05
A commit is an immutable object naming a tree, zero or more parents, an author, a committer, and a message, addressed by the hash of its own content. Because the parent is part of the hashed content, changing any commit changes the identity of every commit after it, which is the whole reason rewriting shared history is the one genuinely dangerous operation rather than merely an awkward one.
What this page is not doing yet
The alternatives above are all present, in reading order, with no scripting. That is the part that had to be true first: an explanation you cannot reach without JavaScript cannot be found by find-in-page, by a search engine, or by a reader who does not have it.
The affordance on top — this one is not landing, show me another — moves between them without leaving the page. It is a convenience over content that is already here, which is the only shape it is allowed to take.
Explanations written elsewhere can join this list. A third-party tutorial that teaches the concept
well is a legitimate route to it, and refusing to link it because it was not written here serves
nobody. It would carry an external label, a date, and a plain statement that it is not maintained
here — the corpus vouches for the concept, and says exactly what it does not vouch for.