How To Find The Current Tag With Git Describe?
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 😎.
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.
Command | Description |
---|---|
--dirty[=<mark>] --broken[=<mark>] | Describes the state of the working tree. |
--all | Uses all the references instead of only annotated tags. |
--tags | Uses all the tags instead of only annotated tags. |
--exact-match | Only outputs exact tag matches of a commit. |
--debug | Outputs verbose debug information. |
--long | Outputs 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:
- Ensure that you have tags on your local repository. (Maybe you deleted it by mistake)
- Try using the git pull command to pull the tags.
- If this is a cloned repository, ensure you have tags on the remote.
- If the remote contains tags, you are in a shallow clone repository.
- 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.
Here are some other Git tutorials for you to enjoy: