395

What command can I use to print out the commit id of HEAD?

This is what I'm doing by hand:

$ cat .git/HEAD
ref: refs/heads/v3.3
$ cat .git/refs/heads/v3.3
6050732e725c68b83c35c873ff8808dff1c406e1

But I need a script that can reliably pipe the output of some command to a text file such that the text file contains exactly the commit id of HEAD (nothing more or less, and not just a ref). Can anyone help?

1

8 Answers 8

701

Use the command:

git rev-parse HEAD

For the short version:

git rev-parse --short HEAD
Sign up to request clarification or add additional context in comments.

For anyone looking for the short version of the hash, git rev-parse --short HEAD will work.
works also for another (different than the checked out) branch: git rev-parse feature/task123
79
git log -1

for only commit id

git log | head -n 1 

Just FYI: git log | head -1 is as same as git log | head -n 1 .
Although the OP has only asked for the commit ID of HEAD, git log -1 is very useful. Because it also displays the commit message and other details which makes further analysis/comparison easy. Thank you!
23

Old thread, still for future reference...:) even following works

git show-ref --head

by default HEAD is filtered out. Be careful about following though ; plural "heads" with a 's' at the end. The following command shows branches under "refs/heads"

 git show-ref --heads

using these commands in a (large) git repo, I get two lines from git show-ref --heads and 6290 lines from git show-ref --head. so if you want just a single hash, this gives maybe not the intended result.
17

You can specify git log options to show only the last commit, -1, and a format that includes only the commit ID, like this:

git log -1 --format=%H

If you prefer the shortened commit ID:

git log -1 --format=%h

Comments

7

Play with Bash:

git show HEAD | sed -n 1p | cut -d " " -f 2

Comments

3

git rev-parse --abbrev-ref HEAD

This does not show commit ID, but rather any names (like branches or tags) associated with the commit. This is not what the original user wanted.
@AsfandQazi but it was exactly what I wanted to know, and my google search gave me this article at the top.
1

You can use this command

$ git rev-list HEAD

You can also use the head Unix command to show the latest n HEAD commits like

$ git rev-list HEAD | head -n 2

Comments

0

You can use

git log -g branchname

to see git reflog information formatted like the git log output along with commit id.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.