9

Is there any syntax for git describe to display only the latest tag and additional commits?

So that you get

4.0.7 for being at the commit tagged 4.0.7
4.0.7-12 for having 12 commits since tag 4.0.7

git describe --tags is pretty close with 4.0.7-12-g09181 but i haven't found a way to get rid of the hash being appended.

git describe --tags --abbrev=2

still displays 4.0.7-12-g0918

git describe --tags --abbrev=0

displays 4.0.7 only.

gherkins
  • 14,603
  • 6
  • 44
  • 70
  • There is no option in the describe command to do what you want. You could pipe the output to a shell script that removes the hash. – 1615903 May 19 '16 at 09:11

2 Answers2

7

There is no option in the describe command to do what you want. You could pipe the output to a shell script that removes the hash.

git describe --tags | sed 's/\(.*\)-.*/\1/'

see https://stackoverflow.com/a/32084572/1468708

thx !

Community
  • 1
  • 1
gherkins
  • 14,603
  • 6
  • 44
  • 70
5

I ran into a similar problem where I wanted to generate a string like: "tag-commits" but optionally followed with the -dirty and/or -broken suffix.

1.0-3    
1.0-3-dirty
1.0-3-dirty-broken

(Dirty simply indicates that you have uncommitted changes).

The accepted answer would however remove the -dirty (or when used -broken) tag at the end and leave the hash in the output.

To fix this I wrote the following command:

git describe --tags --dirty | sed 's/-g[a-z0-9]\{7\}//'

This works because the hash always starts with a "g" followed by 7 characters.

  • `a-f` instead of `a-z` and sometimes hashes are 9 characters long. So: `git describe --tags --dirty | sed 's/-g[0-9a-f]\{7,9\}//'` – Itay Grudev Mar 30 '22 at 16:36