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.
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.
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.
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.
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.
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 (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.
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.
Answer each question, then check it. Nothing is recorded; this is your own practice.
A free tech program — complimentary, as our commitment to get America working. Help us build VoTechWorks. Tell us what works, what doesn’t, and what you want to learn.