2010-10-08 2 views
6

Я знаю, как список удаленных филиаловначальник фиксации для всех удаленных филиалов с помощью Git

$ git branch -a 

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

$ git rev-parse HEAD 

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

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

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

ответ

9

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

git branch -r -v --no-abbrev 

и игнорировать часть с сообщением фиксации или

git show-ref 

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

+0

Немного связанный; 'git show-ref' также дает хеши для тегов. Знайте, что это * хэши самих тегов * и * не коммиты, на которые они указывают *. –

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 
5

Я знаю, что это старый и ответил, но я думаю, что 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