Skip to main content
Git Tagging: Versioning Your Project Milestones — Tutorial
Tutorial4 min read

Git Tagging: Versioning Your Project Milestones

What Are Tags?

A tag is a named reference to a specific commit. Unlike branches, tags do not move — they permanently mark a point in history. Tags are ideal for releases, version bumps, and important milestones.

git tag v1.0.0

Lightweight vs Annotated Tags

Lightweight tags are just a name pointing to a commit — like a branch that never moves.

git tag v1.0.0

Annotated tags store metadata: the tagger's name, email, date, and a message. Use these for public releases:

git tag -a v1.0.0 -m "Initial production release"

Viewing Tags

# List all tags
git tag

# Filter by pattern
git tag -l "v2.*"

# Show tag details
git show v1.0.0

Pushing Tags

Tags are not pushed by default with git push. You must push them explicitly:

# Push a specific tag
git push origin v1.0.0

# Push all tags
git push origin --tags

Checkout a Tag

To inspect code at a specific version:

git checkout v1.0.0
# You are now in detached HEAD state

Semantic Versioning

Most projects follow semver: MAJOR.MINOR.PATCH:

  • MAJOR — breaking changes (v2.0.0)
  • MINOR — new features, backward compatible (v1.1.0)
  • PATCH — bug fixes, backward compatible (v1.0.1)
git tag -a v2.0.0 -m "Breaking: redesign API endpoints"
git tag -a v1.1.0 -m "Feat: add user search endpoint"
git tag -a v1.0.1 -m "Fix: handle null response in auth"

Tags make your release history navigable and integrate with CI/CD pipelines for automated deployments.

Get the Offline Git Field Guide

The 97-page PDF + ePub course — $9. Read this command, offline.

Learn more →