Git удаленная ветвь удалена, но все же появляется в 'branch -a'

Позволяет сказать, что у меня была ветвь с именем coolbranch в моем репозитории.

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

git push origin :coolbranch
git branch -D coolbranch

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

Но когда я запустил

git branch -a

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

remotes/origin/coolbranch

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

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

Ответ 1

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

git branch -d -r origin/coolbranch

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

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

Ответ 2

Вы пытались: git remote prune origin

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

чернослив

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

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

Ответ 3

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

git fetch -p

который извлекает и очищает все происхождение.

Ответ 4

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

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

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

git fetch -p

Ответ 5

git remote prune <remote>

Где <remote> - это имя удаленного источника, например, источник или восходящий поток.

пример: git remote prune origin