Удалите удаленные ветки в Git

Я хочу удалить некоторые удаленные ветки моего репозитория проектов. Я выполнил следующую команду:

git push origin :name_of_branch

и когда я перечисляю удаленные ветки с помощью

git branch -r

ветвь, которую я удалил, не появляется, но партнер моей версии

git fetch

и позже

git branch -r

и в списке ветвь name_of_branch, которую я удалил, все еще находится в списке. Однако, когда он пытается удалить ветвь с помощью

git push origin :name_of_branch

Он получает следующее сообщение:

error: unable to delete 'name_of_branch': remote ref does not exist
error: failed to push some refs to 'the_name_of_the_repository'

Как я могу удалить ветвь полностью из списка?

Ответы

Ответ 1

Это происходит потому, что, когда ваш партнер вашего запускает git fetch, удаление ветки не применяется к его репозиторию. fetch обновляет и добавляет ветки.

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

Ответ 2

git fetch --prune <remote> можно использовать для удаления всех ветвей удаленного отслеживания, которые являются ветвями отслеживания, которые больше не существуют в удаленном репозитории (т.е. они удалены на удаленном компьютере). Из официальной документации ядра Linux Git для fetch:

-p

--prune

После извлечения удалите все ветки удаленного отслеживания, которые больше не существуют на пульте дистанционного управления.

Вы также можете удалять устаревшие ветки удаленного отслеживания командой

git branch -D -r <remote>/<branch>

как указано в документации для git branch:

Используйте -r вместе с -d для удаления ветвей удаленного отслеживания. Обратите внимание, что имеет смысл удалять ветки удаленного отслеживания, если они больше не существуют в удаленном репозитории, или если git fetch был настроен не для их повторного использования.

Ответ 3

git branch -r -d 'remote-branch'