🚧 Under construction — VoTechWorks is being built. A free tech program — complimentary, as our commitment to get America working.
voTechWorksGrade 13 · a vocational technology learning center, by urbanicity
newSchoolWorks.com › VoTechWorks › Technology & Design › Web & Software Development › Git Version Control for Web & Software Development › Lesson 10
TEC-WEB46-05 · Lesson 10 · 10 clock hours · demo

Tags, Releases, and Semantic Versioning

Objective. Students create lightweight and annotated Git tags, push tags to a remote, interpret semantic version numbers, and create a GitHub Release tied to an annotated tag.

⚠ Pending professional review

This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.

VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.

What Are Git Tags?

A tag is a named pointer to a specific commit in your Git history. Unlike a branch, a tag does not move as new commits are added — it permanently marks a moment in your project's timeline. Tags are most commonly used to mark release points, such as version 1.0.0 of your application.

Git supports two kinds of tags: lightweight and annotated.

Lightweight Tags

A lightweight tag is simply a name that points directly to a commit. It stores no extra metadata. Create one with:

```bash

git tag v0.1

```

This tags whichever commit `HEAD` currently points to. Lightweight tags are convenient for private bookmarks or quick labels during development, but they carry no author information, date, or message of their own.

Annotated Tags

An annotated tag is stored as a full Git object. It records the tagger's name, email, date, and a message — making it the recommended choice for public releases. Create one with:

```bash

git tag -a v1.0.0 -m "First stable release"

```

The `-a` flag signals an annotated tag; `-m` supplies the message inline (omitting `-m` opens your default editor). You can inspect the tag object with `git show v1.0.0`, which displays the tag metadata followed by the commit it points to.

Pushing Tags to GitHub

By default, `git push` does not upload tags. You must push them explicitly:

```bash

git push origin --tags

```

This pushes every local tag that the remote does not yet have. To push a single tag, use `git push origin v1.0.0`. Once pushed, tags appear in the Tags section of your GitHub repository.

Semantic Versioning

Semantic versioning (SemVer) is a widely adopted convention for version numbers. The full specification is published at semver.org. A SemVer number takes the form:

```

MAJOR.MINOR.PATCH

```

| Component | Increment when… |

|-----------|----------------|

| MAJOR | You make a breaking, backward-incompatible change |

| MINOR | You add functionality in a backward-compatible way |

| PATCH | You make a backward-compatible bug fix |

Additional pre-release labels (e.g., `1.0.0-beta.1`) and build metadata (e.g., `1.0.0+20250101`) are also allowed under the spec.

Examples:

Using SemVer in your Git tags communicates clearly to teammates, package managers, and CI/CD pipelines exactly what kind of change a release represents.

Creating a GitHub Release

A GitHub Release is a deployable snapshot of your software tied to a tag. It can include compiled binaries, source archives, and a human-readable changelog. To create one:

1. Navigate to your repository on GitHub.

2. Click Releases in the right sidebar, then Draft a new release.

3. In the Choose a tag dropdown, select your annotated tag (e.g., `v1.0.0`). If it does not appear, verify you have pushed it.

4. Give the release a title (commonly the version number).

5. Write a changelog-style description — list what was added, changed, fixed, or removed. Use plain language; bullet points work well.

6. Click Publish release.

The published release gets a permanent URL you can share with users or reference in documentation. Record this URL in your lab log for sign-off.

Safety and Professional Practices

Key terms8

Lightweight tagA Git tag that stores only a name pointing directly to a commit, with no additional metadata such as a message, author, or timestamp.
Annotated tagA Git tag stored as a full Git object containing the tagger's name, email, date, and a message; recommended for public releases.
Semantic versioning (SemVer)A versioning convention using MAJOR.MINOR.PATCH numbers, where each component signals the scope of change in a release (breaking, backward-compatible, or bug fix).
MAJOR versionThe leftmost component of a SemVer number; incremented when a release introduces backward-incompatible (breaking) changes.
MINOR versionThe middle component of a SemVer number; incremented when new functionality is added in a backward-compatible way, resetting PATCH to zero.
PATCH versionThe rightmost component of a SemVer number; incremented for backward-compatible bug fixes only.
GitHub ReleaseA deployable snapshot on GitHub tied to a Git tag, which can include a changelog description, binary assets, and a permanent shareable URL.
git push origin --tagsThe Git command that uploads all local tags not yet present on the specified remote repository.
In class: Instructor demonstrates creating a lightweight tag with git tag v0.1 and an annotated tag with git tag -a v1.0.0 -m 'First stable release', explains the difference between the two types, and pushes both to GitHub with git push origin --tags; students replicate the steps on their own repositories. · Students interpret a table of semantic version numbers (MAJOR.MINOR.PATCH), identify which component changes for a bug fix, a backward-compatible new feature, and a breaking change, and write the correct next version number for five described change scenarios. · Each student creates a GitHub Release on their course repository by navigating to Releases, creating a new release from their annotated tag, writing a changelog-style release description, and publishing it; they record the release URL in their lab log.
Materials: Git workstation, GitHub account, terminal, semantic versioning reference (semver.org), lab log
Check: GitHub repository shows at least two tags (one lightweight, one annotated) and a published GitHub Release with a readable changelog; lab log entry signed off; scenario quiz score 80% or higher.

Practice check8

Answer each question, then check it. Nothing is recorded; this is your own practice.

Version control and software development tools
1. Which command creates an annotated Git tag named v2.0.0 with the message 'Major redesign'?
Version control and software development tools
2. A developer runs git push origin main. Their annotated tag v1.0.0 does NOT appear on GitHub afterward. What is the most likely reason?
Software development fundamentals
3. According to semantic versioning, which version number correctly follows 3.7.2 after a backward-compatible new feature is released?
Software development fundamentals
4. A team releases version 5.1.4 and then discovers a critical bug. They fix only the bug with no other changes. What is the correct next version number?
Software development fundamentals
5. A project is at version 4.3.9. A new release removes a public API endpoint that other applications rely on. What is the correct next semantic version?
Version control and software development tools
6. What key advantage do annotated tags have over lightweight tags in a shared project?
Version control and software development tools
7. When creating a GitHub Release, which of the following is the correct first requirement?
Version control and software development tools
8. A colleague suggests force-pushing over a shared annotated tag to fix an incorrect message. What is the professional best practice?
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.