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