I would like to retain (for now) the ability to link Git changesets to workitems stored in TFS.
I already wrote a tool (using a hook from Git) in which I can inject workitemidentifiers into the message of a Git changeset.
However, I would also like to store the identifier of the Git commit (the hash) into a custom TFS workitem field. This way I can examine a workitem in TFS and see what Git changesets are associated with the workitem.
How can I easily retrieve the hash from the current commit from Git?
Another one, using git log:
It's very similar to the of @outofculture though a bit shorter.
Use
git rev-list --max-count=1 HEAD
Here is one-liner in Bash shell using direct read from git files:
You need to run above command in your git root folder.
This method can be useful when you've repository files, but
git
command has been not installed.If won't work, check in
.git/refs/heads
folder what kind of heads do you have present.If you need to store the hash in a variable during a script, you can use
Or, if you only want the first 10 characters (like github.com does)
If you're going for speed though, the approach mentioned by Deestan
is significantly faster than any other method listed here so far.
To turn arbitrary extended object reference into SHA-1, use simply git-rev-parse, for example
or
Sidenote: If you want to turn references (branches and tags) into SHA-1, there is
git show-ref
andgit for-each-ref
.