foundation
Tag
Name important commits for releases, audits, deployment traceability, and package version provenance.
A tag names a specific commit — commonly a release point. **Lightweight** tags are simple refs; **annotated** tags store tagger, date, message, and can be GPG-signed for provenance.
git tag -a v2.4.0 -m "Release 2.4.0"
git push origin v2.4.0
git show v2.4.0
Tags connect SemVer labels to exact source state for changelogs, deployments, rollback decisions, and artifact reproducibility.
On interviews: lightweight vs annotated tags, signed tags, immutability of published release tags, and CI flows triggered by tags.
Common pitfalls: moving or deleting published tags breaks audit trails; lightweight tags on releases lose metadata; tagging the wrong commit after a rushed merge.
The trade-off is release ceremony (annotated/signed tags) versus speed (lightweight tags on internal milestones).
Checklist:
- Prefer annotated tags for public releases.
- Protect published release tags on the remote.
- Link tags to changelogs and build artifacts.
- Never retag a release consumers already deployed.