How To Find The Current Tag With Git Describe?

Tim Mouskhelichvili
Tim Mouskhelichvili
2 minutes to read

Git quickly became the most popular and the de-facto choice of most developers' version control software. It provides many commands that make tracking code changes easy. Some of those commands are popular (like git push or git commit), and others are less (like the git describe command). The git describe command is used to find the most recent tag of a commit.

To find the current tag, use the git describe command, like so:

bashgit describe

In this article, I will explain the describe command and its different options, and give real-life usage examples.

Let's get to it 😎.

git describe

Definition

The git describe command finds the latest tag reachable from a commit.

By default, it points to HEAD (the latest commit of the active branch).

Here is an example of this command in action:

bash> git describe
v1.0.1

In this example, the command shows the tag without any additional information because the tag points to the commit.

Otherwise, it would show the tag name, the number of commits to reaching it, and an abbreviated name of the latest commit. Here is an example of this:

bash> git describe
v1.0.1-3-ea7c8c67

Note: Without the --all or --tags options, this command only shows the annotated tags.

Command options

Here are some of the options supported by the git describe command.

CommandDescription
--dirty[=<mark>]
--broken[=<mark>]
Describes the state of the working tree.
--allUses all the references instead of only annotated tags.
--tagsUses all the tags instead of only annotated tags.
--exact-matchOnly outputs exact tag matches of a commit.
--debugOutputs verbose debug information.
--longOutputs the long version format each time.

How to find the latest tag of a specific commit?

To find the latest tag of a specific commit, specify the commit's hash like so:

bashgit describe <hash>

How to get the last tag matching a regex?

To find the latest tag matching a regex, use the git tag command, like so:

bashgit tag --list 'v-*'

This command will return all the tags matching that pattern.

How to fix "fatal: No names found, cannot describe anything."

This error means that you have no tags in your repository.

To fix this error:

  1. Ensure that you have tags on your local repository. (Maybe you deleted it by mistake)
  2. Try using the git pull command to pull the tags.
  3. If this is a cloned repository, ensure you have tags on the remote.
  4. If the remote contains tags, you are in a shallow clone repository.
  5. Use the git fetch --prune --unshallow command to fetch the tags.

Final thoughts

As you can see, the git describe command is very useful when you need to find the latest tag.

This command is particularly useful in the CLI context.

git describe

Here are some other Git tutorials for you to enjoy:

Comments (2)
Reply to:
Pedro January 19, 2023 16:04PM
fatal: --unshallow on a complete repository does not make sense
REPLY
Tim Mouskhelichvili February 02, 2023 21:54PM
When are you getting this error?
REPLY