Git Tag Commit Guide

August 30, 2022

Introduction

Git tags serve as reference points in a project's development history. Use tags to mark a program release version, bug fix, patch, but also a specific commit. By tagging a particular commit, it is easy to revisit that certain point in development later and continue the development from there.

In this tutorial, you will learn to create a Git tag for a specific commit.

Learn to create a Git tag for a specific commit.

Prerequisites

Create a Git Tag for a Commit

Follow the steps below to create a tag for a specific commit:

1. Track Files

After making changes to existing files or adding new ones to the repository, add all files to the staging environment by running:

git add .

2. Create Commit.

Create a commit using the git commit command. The syntax is:

git commit -m "Notes about the commit"

For example:

Creating a new commit in Git.

3. Create Tag

Create a tag for the last commit by specifying the HEAD in the git tag command. Referencing the HEAD enables users to create a tag for the latest commit without specifying the commit's exact SHA hash.

Lightweight tags are suitable for internal use, while annotated tags are used for public releases as they contain additional metadata.

The syntax to create an annotated tag for the last commit is:

git tag -a [tag_name] HEAD -m "Tag message"

For example:

git tag v2.5 HEAD -m "Version 2.5 released"

Running the git log --oneline command shows that the v2.5 tag was created for the latest commit:

Creating a tag for the latest commit on HEAD.

4. Sync Changes with Remote

Use the following syntax to push the new tag to the remote repository:

git push [remote_name] [tag_name]

For example:

Pushing a Git tag to a remote repository.

The command pushes the v2.5 tag to the origin remote repository. Alternatively, export all local tags to the remote repository by running:

git push origin --tags

Create a Git Tag for an Old Commit

Create a Git tag for an earlier commit in Git history by specifying the commit's SHA hash. Follow the steps below to create a tag with the current date or matching the commit date.

Create Tag With Current Date

1. Obtain Commit SHA

Use the --oneline flag with git log to obtain the commit SHA value:

git log --oneline

The --oneline flag outputs the repository log with a short SHA code for each commit:

Obtaining the SHA hashes for Git commits.

Copy the SHA value for the commit you want to create the tag for.

2. Create a Tag

Use the following syntax to create an annotated tag:

git tag -a [tag_name] [commit_SHA] -m "Notes about the tag"

For example:

git tag -a v1.7 7f122d3 -m "Hotfix released"

The command creates a tag named v1.7 for the specified commit. Rerun git log --oneline to check:

Checking to see if the tag was created.

Although the tag is created for an old commit, the command creates tags with the current date and shows that value on a GitHub releases page.

Create Tag Matching Commit Date

Follow the steps below to create a tag dated the same as the commit date:

1. Obtain Commit SHA

Obtain the commit SHA by running:

git log --oneline

2. Checkout to Old Commit

Set the HEAD to the old commit. Use the following syntax:

git checkout [commit_SHA]

For example:

Switching the head to a specific commit.

The command switches the HEAD to the specified commit, resulting in a detached HEAD state. This state occurs because it is in the middle of the commit history and making changes can disturb the Git blockchain. The same happens when cloning a Git tag or when you checkout a Git tag.

3. Change the Date and Add Tag

Temporarily set the date to match the HEAD commit date:

GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \

Create the tag using the following syntax:

git tag -a [tag_name] -m "Tag notes"
Creating a tag with an old date.

4. Export Changes

Push the changes to the remote repository. The syntax is:

git push [remote_name] --tags

For example:

Pushing all git tags to a remote repository.

5. Switch HEAD Back to Master

Switch back to the master branch or any other branch using the git checkout command. To switch back to master, run:

git checkout master
Switching HEAD to master in Git.

Conclusion

This tutorial showed how to create a Git tag for the latest commit and for a specific commit in Git project development history. The guide also shows how to set the tag creation date to match the commit date.

For more Git tutorials, see how to clone a Git tag, delete a Git tag, or rename a tag in Git.

Was this article helpful?
YesNo
Bosko Marijan
Having worked as an educator and content writer, combined with his lifelong passion for all things high-tech, Bosko strives to simplify intricate concepts and make them user-friendly. That has led him to technical writing at PhoenixNAP, where he continues his mission of spreading knowledge.
Next you should read
Git Clone Tag Guide
August 29, 2022

This tutorial shows how to clone a specific Git tag from a remote repository, and address the detached HEAD state.
Read more
Git List Tags
August 25, 2022

Listing tags allows you to quickly find a specific commit or project version. This tutorial shows how to list local and remote Git tags.
Read more
Git Push Tag to Remote Guide
August 17, 2022

Follow this guide to learn to create and push single, multiple, or all existing local Git tags to a remote repository.
Read more
How To Delete Git Tag
August 15, 2022

Git tags mark particular points in a project's history. This tutorial shows how to delete a local and remote tag.
Read more