Some commits are special — they mark a release, a milestone, a version. git tag stamps them with a golden label that everyone can reference forever.
Branches move forward with every commit.
Tags don't — they're permanent bookmarks
pointing to a specific commit forever.
v1.0,
v2.0,
release-2024
— these are tags. They mark important moments so you can
always go back to that exact version.
Now anyone can check out your specific version with
git checkout v1.0.
Tags are used by CI/CD pipelines, release notes, and deployment tools.
Two types: lightweight (just a name) and
annotated (includes message, author, date — like a commit).
Every GitHub "Release" you've ever downloaded? That's a git tag behind the scenes.