A Git tag is a named reference to a specific commit in a repository's history. It is commonly used to mark significant points in a project's development, such as releases, milestones, or important commits.
Tags are typically used to provide a human-readable and memorable identifier for a specific commit, making it easier to refer to that commit later. They serve as permanent markers and are not intended to change over time, unlike branches that can move as new commits are added.
Git List Local Tags
To view the tags in a local repository, we can use the
git tag command with no arguments:
$ git tag
The command should return the tags available in the current repository as:
SD/688741 SD/692351 SD/693793 SD/695331 SD/700586 SD/704605 SD/706766 SD/709766 SD/709776 SD/715912 SD/717473 SD/725290 v0.1.0 v0.2.0 v0.3.0 v0.4.0 v0.5.0
Git Tag Description
To get an extensive description of the tags list, we can use
-n option to the
git tag command as shown:
$ git tag -n
SD/688741 Move files from psl-monad submodule to super-project SD/692351 Update files from psl-monad SD/693793 Update files from psl-monad SD/695331 Update files from psl-monad source-depot [SD:695331] SD/700586 Update files from Source Depot changeset [SD:700586] SD/704605 Update files from Source Depot changeset [SD:704605] SD/706766 Update files from Source Depot changeset [SD:706766] SD/709766 Bump windows-build SD/709776 Update files from Source Depot changeset [SD:709766] SD/715912 Update files from Source Depot changeset [SD:715912] SD/717473 Integrate changes from SD between [SD:715912] and [SD:717473] SD/725290 Integrate changes between [SD:717473] and [SD:725290]
Git Tag Pattern
In some cases, you may only want to fetch the tags that match a specific pattern. In that case, we can use the
-l option and pass the desired pattern.
An example is as shown:
$ git tag -l *preview*
The command above should return the
preview tags. An example output is as shown:
v6.1.0-preview.1 v6.1.0-preview.2 v6.1.0-preview.3 v6.1.0-preview.4 v6.2.0-preview.1
List and Sort Git Tags
We can also sort the tags from the tag command. We can use lexical or version sorting using the
For example, to sort the tags in lexicographic order, we can use the command:
git tag -l --sort=refname *preview*
v6.1.0-preview.1 v6.1.0-preview.2 v6.1.0-preview.3 v6.1.0-preview.4 v6.2.0-preview.1 v6.2.0-preview.2 v6.2.0-preview.3
To list Git tags sorted by version numbers, we have to use the “git tag” command with the
–sort=version:refname option and an additional tag pattern.
git tag -l --sort=-version:refname *preview*
v7.4.0-preview.3 v7.4.0-preview.2 v7.4.0-preview.1 v7.3.0-preview.8 v7.3.0-preview.7 v7.3.0-preview.6
To sort the tags based on the most recent ones, we can use the
-sort=committerdate as shown in the example command below:
git tag --sort=committerdate -l *prewview*
Git List Remote Tags
To list remote tags, we can use the git ls-remote command followed with the --tag option as shown:
git ls-remote --tags <remote>
For example, if your remote name is “origin”, you will have to execute the following command.
git ls-remote --tags origin
60b3b304f2e1042bcf773d7e2ae3530a1f5d52f0 refs/tags/SD/688741 5386c71bb23aff124810695e8c28bfd2173654fd refs/tags/SD/692351 ef9ece38c27625ac3f7507b40a0a960753432e2c refs/tags/SD/693793 273328d06f591296ae2548fcab38c17efc2466cb refs/tags/SD/695331 3998ce06ba7c0d352278db553265ebadaec79e4c refs/tags/SD/700586 d9bf6b037f7c859b0951d0f0a3f7dc52fae58cb5 refs/tags/SD/704605 b8dced8e80f255e0a609364e6ae8703f3e9d0248 refs/tags/SD/706766 7736f0d9e07dd0e10fc47d6f7f367e2803e133c7 refs/tags/SD/709766 b38773eb79908709628115c2f7b18eb0cb121164 refs/tags/SD/709776
Git Fetch Remote Tags
Once you've determine there are some remote tags available in your repository, you can fetch them by using the
git fetch command as shown:
git fetch --all --tags
Once you've fetched the remote tags, you can list them locally by using the git tag command.
In this tutorial,we explored the various ways of listing tags in your git repository whether local or remote. We also covered how to sort and fetch remote tags to your local repository.