Summary: Releases and tags
The one-sentence definition
Section titled “The one-sentence definition”A release is a tagged commit + release notes + an announcement. All the ceremony reduces to these three things.
The essential commands
Section titled “The essential commands”git tag -a vX.Y.Z -m "Release vX.Y.Z: description" # create annotated taggit tag # list tagsgit tag --sort=-v:refname # list, sorted version-awaregit show vX.Y.Z # tag detailsgit push origin vX.Y.Z # push one taggit push origin --tags # push all tagsgit fetch --tags # fetch tags from remotegit tag -d vX.Y.Z # delete tag locallygit push origin --delete vX.Y.Z # delete tag on remoteSemantic versioning (semver)
Section titled “Semantic versioning (semver)”MAJOR.MINOR.PATCH- MAJOR: incompatible changes (breaking)
- MINOR: new features, backward-compatible
- PATCH: bug fixes, backward-compatible
Pre-release: vX.Y.Z-alpha.1, vX.Y.Z-beta.3, vX.Y.Z-rc.1.
Canonical release notes structure
Section titled “Canonical release notes structure”# vX.Y.Z - YYYY-MM-DD
## Highlights## Breaking changes## New features## Improvements## Bug fixes## Migration notes## ContributorsNot every release needs every section. Patch releases might only have “Bug fixes.”
Releases across the four workflows
Section titled “Releases across the four workflows”| Workflow | How releases work |
|---|---|
| GitHub Flow | Tag specific main commits; deploys are continuous regardless |
| GitFlow | Cut release/* branch, QA, merge to main + develop, tag main |
| Trunk-based | Often automated; tag specific trunk commits, auto-generate notes |
| Forking | Maintainer is the release authority; internal workflow drives mechanics |
Audience-driven release notes
Section titled “Audience-driven release notes”- Users want what’s new, what’s fixed, what’s broken
- Operators want deploy expectations, migration steps
- Developers want API changes, deprecations
- Auditors want a complete record
What you carry into L11
Section titled “What you carry into L11”You can tag, version, and release any project. L11 covers two more primitives, cherry-pick (move commits between branches) and stash (save in-progress work). Both are tools for advanced workflows.
Voice anchor
Section titled “Voice anchor”Git stores snapshots. Every other command is just navigating those snapshots.
A tag is an immutable label on a specific snapshot. A release is that snapshot’s human-readable explanation.