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.