ArekBulski
ArekBulski

Reputation: 5118

Git how to get hashid of last GitHub release tag

Every 10-20 commits I have a commit of the form "version uped to x.y.z" that is also marked a tag, since its a GitHub release point. Example below. I need to get hashid of last such commit so I can use it in a script like "git rebase -i $(hashid)", which is a point of freezing, where existing commits should not changed. There are 2 possible means to get it: search for last commit with message starting with "version uped" or search for last commit being a tag. I am not skilled with bash, so please assist.

dfd48cd (HEAD -> master, origin/master, origin/HEAD) Operator [:] for GreedyRange removed
b610256 Array GreedyRange docs updated
e6a1446 Embedded docstring updated
825bf83 moved gallery and deprecated_gallery to new folders
9414a55 Kaitai comparison schemas moved to a folder
61e9ccb Padded fixed, negative length check and docstring
ad6148c FixedSized updated, changed build semantics
979538d FixedSized NullTerminated NullStripped fixed, _parsereport and docstrings
4719d67 lib/py3compat updated, supportsintflag supportsintflag more accurate
9c164d4 makefile added xfails profile
672fefa (tag: v2.9.40) version uped to 2.9.40

In this example, output would be: 672fefa52b537c17f5ede90996b9156eb0e040ac

Upvotes: 0

Views: 228

Answers (1)

jsageryd
jsageryd

Reputation: 4643

Here is one way:

git tag --sort -v:refname | head -1 | xargs git rev-list -n 1

Explained:

  1. Get the list of all tags, sorted descending by version number
  2. Pick the first one (the one with the highest version number)
  3. Pass it to git rev-list to find the commit hash it references

Upvotes: 2

Related Questions