удаленная ветка git удалена, но все еще появляется в 'branch -a' - PullRequest
484 голосов
/ 23 февраля 2011

Допустим, у меня есть ветвь с именем coolbranch в моем хранилище.

Теперь я решил удалить его (как удаленно, так и локально) с помощью:

git push origin :coolbranch
git branch -D coolbranch

Отлично! Теперь ветка действительно удалена.

Но когда я бегу

git branch -a

Я все еще получаю:

remotes/origin/coolbranch

Следует отметить, что когда я клонирую новый репозиторий, все в порядке, и git branch -a не показывает ветвь.

Я хочу знать - есть ли способ удалить ветку из списка branch -a без клонирования нового экземпляра?

Ответы [ 5 ]

608 голосов
/ 23 февраля 2011

git remote prune origin, как предлагается в другом ответе, удалит все такие устаревшие ветви. Это, вероятно, то, что вы хотели бы в большинстве случаев, но если вы хотите просто удалить эту конкретную ветку удаленного отслеживания, вы должны сделать:

git branch -d -r origin/coolbranch

(-r легко забыть ...)

-r в этом случае будет «Перечислять или удалять (если используется с -d) ветви удаленного отслеживания». согласно документации git, найденной здесь: https://git -scm.com / docs / git-branch

264 голосов
/ 23 февраля 2011

Вы пробовали: git remote prune origin

Из git удаленных документов :

чернослив

Удаляет все устаревшие ветки удаленного слежения под .Эти устаревшие ветви уже удалены из удаленного репозитория, на который ссылается , но все еще доступны локально в "remotes / ".

С параметром --dry-run сообщать, какие ветви будут удалены, но на самом деле не сокращать их.

205 голосов
/ 30 августа 2012

Не забудьте удивительный

git fetch -p

, который выбирает и удаляет все источники.

18 голосов
/ 19 августа 2015

В нашем конкретном случае мы используем Stash в качестве удаленного репозитория git. Мы перепробовали все вышеперечисленное и ничего не получалось. Нам пришлось сделать следующее:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

Затем, когда пользователи пошли извлекать изменения, им нужно было сделать следующее:

git fetch -p
16 голосов
/ 23 марта 2016
git remote prune <remote>

Где <remote> - имя удаленного источника, например origin или upstream .

пример: git remote prune origin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...