Head commit for all remote branches using Git
Asked Answered
C

3

9

I know how to list the remote branches

$ git branch -a

And I know how to find the head commit hash of my current branch

$ git rev-parse HEAD

But I'm not sure how to list all the head commit hashes for all the remote branches. This is close to what I want but what order are they in?

$ git rev-parse --remotes
4b9f7128e9e7fa7d72652ba49c90c37d0727123d
4ebab9616fac6896b7827e8502b4dc7c5aac6b5b
ea7a5fab4a757fb0826253acf1fe7d8c546c178e
...

Ideally, I'd like a list of branch-name commit-hash pairs or even a way to pass a remote branch name to git rev-parse HEAD

Communicable answered 8/10, 2010 at 18:20 Comment(0)
S
11

Use either

git branch -r -v --no-abbrev

and ignore part with commit message or

git show-ref

and filter results starting with refs/remotes.

Spirula answered 8/10, 2010 at 18:41 Comment(1)
Somewhat related; git show-ref gives you hashes for tags too. Know that these are the hashes of the tags themselves and not the commits they point to.Logistician
B
5

I know this is old and answered, but I think git ls-remote would work for this too.

git ls-remote --heads origin

fcce961b46784fae13be8a30c2622ddd34d970ec        refs/heads/develop
9da7bb692a72235451706f24790a3f7a100a64e2        refs/heads/feature-netty-testing
86020c50d86691caecff4a55d3b1f2f588f6291d        refs/heads/javafx-testing
871d715e5c072b1fbfacecc986f678214fa0b585        refs/heads/master
7ed641c96d910542edeced5fc470d63b8b4734f0        refs/heads/orphan-branch
Brookweed answered 13/8, 2012 at 10:12 Comment(0)
Q
2

You can use git rev-parse for this. It can take anything which looks even remotely like a commit and returns the full SHA1 hash for that commit.

For example, to get the SHA1 of HEAD:

git rev-parse HEAD

To get the SHA1 of master:

git rev-parse master

To get the SHA1 of origin/trunk:

git rev-parse origin/trunk

To get the SHA1s of all remote heads (this is just one of many ways to do this, and certainly not the best one):

 git branch -r | cut -d' ' -f 3 | while read remote; do
   echo ${remote} `git rev-parse ${remote}`
done
Quietly answered 8/10, 2010 at 19:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.