Предположение (или определение): под отслеживающей ветвью вы подразумеваете ветвь с установленным восходящим набором и , которая в восходящем направлении относится к имени удаленного отслеживания. Например, если ветвь develop
имеет origin/develop
в качестве восходящего потока, это считается; но если ветвь test
имеет develop
, установленный в качестве восходящего потока, то он не считается.
Возможная последовательность команд для использования в этом случае:
git fetch
, за которой следует:
git branch -vv | grep origin/
Вывод будет выглядеть примерно так:
* master 083378cc35 [origin/master] commit subject line
xyz 8dbdf339cd [origin/xyz: ahead 1, behind 13] another subject line
, который говорит нам, что master
обновлен, но xyz
не синхронизирован c с его удаленным аналогом .
Обратите внимание, что если рассматриваемый восходящий поток не называется origin
, вам необходимо соответствующим образом изменить команду grep
. Вам также может понадобиться более одного git fetch
или вы можете использовать git fetch --all
. (Вы также можете использовать git fetch --prune
или установить fetch.prune
на true
, но это здесь не зависит от всего остального.)
Можно написать более необычный скрипт, который печатает только names , пропускает ветки с синхронизацией c и т. Д. Если вы хотите сделать это, используйте git for-each-ref
для перечисления ссылок в пространстве имен refs/heads/
. Это твои названия веток. Для каждого имени проверьте, имеет ли оно значение восходящего направления, и если да, получите идентификатор ha sh его восходящего направления. Сравните это с ha sh ID филиала. Кроме того, проверьте, является ли восходящий канал локальным ответвлением (пример test
выше, где восходящий поток develop
) или именем удаленного отслеживания.
Если восходящий поток is имя удаленного отслеживания и ha sh идентификаторы локального имени и восходящего потока отличаются, ветвь не синхронизирована c с ее удаленным аналогом. Чтобы получить счет впереди и / или сзади, используйте:
git rev-list --count --left-right local...upstream
Счетом вперед будет напечатано первое число, а счетом позади будет второе.