8

我知道如何列出远程分支

$ git branch -a

而且我知道如何找到我当前分支的头部提交哈希

$ git rev-parse HEAD

但我不确定如何列出所有远程分支的所有头部提交哈希。这接近我想要的,但它们的顺序是什么?

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

理想情况下,我想要一个分支名称提交哈希对的列表,甚至是一种将远程分支名称传递给git rev-parse HEAD

4

3 回答 3

11

使用任一

git branch -r -v --no-abbrev

并忽略带有提交消息的部分或

git show-ref

并从 refs/remotes 开始过滤结果。

于 2010-10-08T18:41:20.563 回答
6

我知道这是旧的并且已回答,但我认为git ls-remote这也适用。

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
于 2012-08-13T10:12:03.420 回答
1

你可以用git rev-parse这个。它可以接受任何看起来像提交的东西,并返回该提交的完整 SHA1 哈希。

例如,要获得 SHA1 HEAD

git rev-parse HEAD

要获得 SHA1 master

git rev-parse master

要获得 SHA1 origin/trunk

git rev-parse origin/trunk

获取所有远程磁头的 SHA1(这只是许多方法之一,当然不是最好的方法):

 git branch -r | cut -d' ' -f 3 | while read remote; do
   echo ${remote} `git rev-parse ${remote}`
done
于 2010-10-08T19:00:27.597 回答