Git: Как мне перечислить только местные филиалы?


936

git branch -a показывает как удаленные, так и локальные филиалы.

git branch -r показывает удаленные ветки.

Есть ли способ перечислить только местные филиалы?

Ответы:


1445

Просто git branchбез вариантов.

Из справочной страницы:

Без аргументов существующие ветки будут перечислены, а текущая ветка будет выделена звездочкой.


25
Я надеялся найти способ перечислить локальные ветви, которые не имеют соответствующей удаленной ветви.
Стив Крейн,


3
@ c00kiemon5ter Мне нравится, что ты все равно нашел способ получить кучу очков! Так смешно
Абрам

4
как это правильный ответ на вопрос («... перечислить * только местные филиалы ...») ???
Вагнер да Силва

7
@ gr4viton: На диалектах английского языка, с которыми я знаком, "перечислять только локальные ветви" обычно разбирается как "перечислять только те ветви, которые являются локальными". (Чтобы сказать «перечислите только те локальные ветви», я бы сказал «перечислите только локальные ветви».)
Матье К.

221

просто команда

git branch

5
Этот ответ имеет ту же отметку времени, что и принятый ответ. Принятый ответ должен быть впереди в миллисекундной части :)
RBT

4
@RBT Наведите курсор мыши на времена. Этот ответ был на 9 секунд быстрее.
Кевин Воркман

1
C00kiemon5ter заслуживает похвалы за ответ!
Skydev

75

git branch -a- все филиалы.

git branch -r- Только удаленные ветки.

git branch -l или git branch- только местные филиалы.


Для меня форматирование этого ответа предполагает, что -lозначает --local, в то время как это на самом деле --list. Я бы предложил удалить его, чтобы избежать этой путаницы - технически все команды в этом ответе могли бы использоваться, -lи они все равно возвращали бы те же результаты.
Тибо Колас

34

Если ведущая звездочка является проблемой, я передаю git branchследующее

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

Это также устраняет строку «(без ответвления)», которая появляется, когда вы отсоединили головку.


1
Пришлось изменить это git branch | awk -F ' +' '$2 !~ /detached/ {print $2}'для git версии 1.9.1.
Юрий

6
cut -c 3-это более простой вариант
Алексей

33

Один из самых простых способов сделать это

git for-each-ref --format='%(refname:short)' refs/heads/

Это прекрасно работает и для скриптов.


12

Вот как вывести список локальных ветвей, которые не имеют удаленной ветки в источнике с тем же именем:

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote

3
Хороший, также oneliner: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton

10

Другой способ получить список, только локальная ветка:

git branch -a | grep -v 'remotes'

4

Там есть отличный ответ на пост о том, как удалить только локальные филиалы. В нем парень создает команду для перечисления локальных ветвей:

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

Ответ содержит отличное объяснение того, как была получена эта команда, поэтому я бы посоветовал вам пойти и прочитать этот пост


Спасибо за ссылку ответ. Мне нужен алгоритм, чтобы перечислить локальные филиалы, которые не отслеживают удаленный. Это единственный, который делает работу.
JuroOravec

2

В дополнение к ответу @ gertvdijk - я добавляю несколько скриншотов на случай, если это поможет кому-то быстро.

На моей оболочке git bash

мерзавец ветка

Команда без параметров показывает все мои локальные ветки. Текущая ветвь, которая в настоящий момент извлечена, показана другим цветом (зеленым) вместе с префиксом звездочки (*), который действительно интуитивно понятен.

введите описание изображения здесь

При попытке увидеть все ветви, включая удаленные ветви, используя

git branch -a

Затем команда удаленных веток, которые еще не извлечены, отображается красным цветом:

введите описание изображения здесь


1
Тысяча слов, из которых нельзя скопировать?
Тони Адамс

2
@TonyAdams Извините, если я что-то упустил, но обе команды, вывод которых я отображал на рисунках, были упомянуты в сером фоне (форматирование кода) в посте. Не берите в голову, что я улучшил форматирование сообщения, чтобы сделать его еще более читабельным. Ценю ваши отзывы.
RBT
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.