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

936

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

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

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

munyengm
источник

Ответы:

1445

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

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

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

gertvdijk
источник
25
Я надеялся найти способ перечислить локальные ветви, которые не имеют соответствующей удаленной ветви.
Стив Крейн,
5
Не полностью, но отвечает на мой вопрос. Как мне перечислить локальные филиалы, у которых нет удаленных филиалов ?
Стив Крэйн,
3
@ c00kiemon5ter Мне нравится, что ты все равно нашел способ получить кучу очков! Так смешно
Абрам
4
как это правильный ответ на вопрос («... перечислить * только местные филиалы ...») ???
Вагнер да Силва
7
@ gr4viton: На диалектах английского языка, с которыми я знаком, "перечислять только локальные ветви" обычно разбирается как "перечислять только те ветви, которые являются локальными". (Чтобы сказать «перечислите только те локальные ветви», я бы сказал «перечислите только локальные ветви».)
Матье К.
221

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

git branch
c00kiemon5ter
источник
5
Этот ответ имеет ту же отметку времени, что и принятый ответ. Принятый ответ должен быть впереди в миллисекундной части :)
RBT
4
@RBT Наведите курсор мыши на времена. Этот ответ был на 9 секунд быстрее.
Кевин Воркман
1
C00kiemon5ter заслуживает похвалы за ответ!
Skydev
75

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

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

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

shortduck
источник
Для меня форматирование этого ответа предполагает, что -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
Shnatsel
источник
3
Хороший, также oneliner: comm -23 <(git branch | sed 's|* | |' | sort) <(git branch -r | sed 's|origin/||' | sort )
gr4viton
10

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

git branch -a | grep -v 'remotes'
jlsanchezr
источник
4

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

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

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

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

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

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

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

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

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

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

git branch -a

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

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

RBT
источник
1
Тысяча слов, из которых нельзя скопировать?
Тони Адамс
2
@TonyAdams Извините, если я что-то упустил, но обе команды, вывод которых я отображал на рисунках, были упомянуты в сером фоне (форматирование кода) в посте. Не берите в голову, что я улучшил форматирование сообщения, чтобы сделать его еще более читабельным. Ценю ваши отзывы.
RBT