Head commit для всех удаленных веток с помощью Git - PullRequest
8 голосов
/ 08 октября 2010

Я знаю, как составить список удаленных веток

$ git branch -a

И я знаю, как найти хеш заголовка моей текущей ветки

$ git rev-parse HEAD

Но я не уверен, как составить список всех хэшей для коммитов для всех удаленных веток. Это близко к тому, что я хочу, но в каком они порядке?

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

В идеале я хотел бы получить список пар фиксаций-хэшей имени ветви или даже способа передать имя удаленной ветви в git rev-parse HEAD

Ответы [ 3 ]

11 голосов
/ 08 октября 2010

Используйте либо

git branch -r -v --no-abbrev

и игнорируйте деталь с сообщением о фиксации, либо

git show-ref

и фильтруйте результаты, начиная с refs / remotes.

5 голосов
/ 13 августа 2012

Я знаю, что это старое и ответил, но я думаю, 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
1 голос
/ 08 октября 2010

Вы можете использовать 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
...