Local (т.е. «не удаленный ") - те, чье имя ссылки начинается с refs/heads/
.
Команда git for-each-ref
предназначена для перебора референс-имен, так что, как правило, вещь для использования:
git for-each-ref --format='%(refname:short)' refs/heads
напечатает их всех. Обратите внимание, что вы не можете просто передать это значение git log -1
, хотя это остановится после регистрации одной фиксации из первой ссылки; поэтому вам нужно что-то вроде того, что вы сделали. Есть множество способов, чтобы построить это, например .:
git for-each-ref --format '%(refname:short)' refs/heads | \
while read branch; do git log -1 $branch; done
или:
git for-each-ref --format='git log -1 %(refname:short)' refs/heads | sh
Во втором случае вы должны добавить --shell
, чтобы убедиться, что все расширения цитируются. Это защищает, например, от ветви с именем foo$bar
.
Что не так с решением, которое у вас уже есть? – Chris
Почему вы не делаете из него псевдоним? – kaman
Если «активные ветви» вы имеете в виду «те, чьи ссылки не были перемещены в упакованные refs или обновлены с тех пор», приведенное выше - более или менее путь. Возможно, вы захотите добавить что-то, чтобы обрабатывать имена ветвей со встроенными слэшами. – torek