Текущая версия git branch --list
в основном работает, но она медленная и громоздкая. Хотя это можно легко исправить в самом GIT, каждый патч, который пытается улучшить пользовательский интерфейс, де -факто отклоняется.
Внешняя команда git branch-list
является решением.
Почему git branch-list
лучше?
git branch --list
Скажем, у вас есть master
ветвь, которая отслеживает удаленную ветвь, но она не всегда актуальна (мы будем использовать репозиторий Linux).
В этом случае официальный git branch
покажет это:
* master
Это не предоставляет много информации. Если вы используете вариант --verbose
получите:
* master 9f4ad9e425a1 [behind 16592] Linux 5.12
Хорошо, мы отстаем к 16592 году, но за что? Мы можем догадаться из названия коммита, но это не совсем ясно.
Если мы используем --verbose --verbose
мы получим:
* master 9f4ad9e425a1 [origin/master: behind 16592] Linux 5.12
Наконец, у нас есть какая -то полезная информация, но у нас потребовалось два уровня условности, и есть много информации, которая обычно не полезна.
git branch-list
С другой стороны, с git branch-list
:
* master origin/master
Бум! Сразу же мы видим самую полезную информацию: master
Tracks origin/master
.
Тогда, если мы хотим знать, когда ветви обновлены, мы используем -t
:
* master origin/master<
Мы действительно заботимся, если мы будем 16592 года, в отличие от 14386 года? Нет, все, что нас волнует, это то, что мы бейнд, что представляет <
символ. Это та же самая информация, которую вы получаете, когда используете __git_ps1
с GIT_PS1_SHOWUPSTREAM=auto
.
Если вы хотите еще больше информации, вы можете указать опцию -v
:
* master [origin/master<] Linux 5.12
Мы получаем всю наиболее полезную информацию на всех уровнях (кого это волнует, что такое идентификатор объекта?).
Вы можете получить некоторые преимущества git branch-list
от официального git branch
, кто бы ни был, вам нужно конкретно знать, какие варианты включить.
Например, допустим, у вас есть несколько филиалов, которые обновляют документацию, префиксированную doc-
. С официальным git branch
вы можете сделать что -то вроде:
git branch --list doc-*
Это работает, однако, 1) это не работает, если вы не указаете --list
, и 2) вам нужно добавить звездочку ( *
).
С другой стороны, с git branch-list
:
git branch-list doc
Вам не нужен ни один вариант, ни Asterisk. Это просто работает сразу.
Другой пример; Вы можете включить полезную сортировку ветвей со следующей конфигурацией:
[branch]
sort = -committerdate
Но с git branch-list
вам не нужно; Это отсортировано по умолчанию.
Чтобы проверить производительность, я использую настоящий репозиторий: Linux. За последние 10 лет я создаю 100 филиалов в совершенно случайных точках.
После согрева кеша:
git branch --list --verbose
21.804 seconds
21.614 seconds
21.415 seconds
git branch-list
0.104 seconds
0.107 seconds
0.107 seconds
Есть даже вопрос?
git branch-list
такой же, как git branch --list
... но намного лучше .
Скопируйте сценарий в любом месте вашего $PATH
и сделайте его исполняемым файлом, или запустите make install
что по умолчанию будет установлена в вашем каталоге ~/bin/
(убедитесь, что он находится в вашем $PATH
).