Короткие ответы
Если вам нужны более подробные объяснения следующих команд, см. Подробные ответы в следующем разделе.
Удаление удаленной ветки:
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin :<branch> # Git versions older than 1.7.0
Удаление локального филиала:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
Удаление локальной ветви удаленного отслеживания:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Длинный ответ: есть 3 разные ветви для удаления!
Когда вы имеете дело с удалением веток как локально, так и удаленно, имейте в виду, что в нем участвуют 3 разные ветви :
- Местное отделение
X
.
- Удаленная ветка происхождения
X
.
- Локальная ветвь удаленного отслеживания
origin/X
, которая отслеживает удаленную ветвь X
.

Оригинальный постер
git branch -rd origin/bugfix
, который удалил только его локальную ветвь удаленного отслеживания origin/bugfix
, а не фактическую удаленную ветвь bugfix
в origin
.

Чтобы удалить эту удаленную ветку , вам нужно
git push origin --delete bugfix

Дополнительные детали
В следующих разделах описываются дополнительные сведения, которые следует учитывать при удалении веток удаленного и удаленного отслеживания.
Нажатие на удаление удаленных веток также удаляет удаленные ветви отслеживания
Обратите внимание, что удаление удаленной ветви X
из командной строки с помощью git push
также приведет к удалению локальной ветви удаленного отслеживания origin/X
, поэтому нет необходимости удалять устаревший удаленный отслеживание ветки с помощью git fetch --prune
или git fetch -p
, хотя это не повредит, если вы все равно это сделаете.
Чтобы убедиться, что ветка удаленного отслеживания origin/X
также была удалена, выполните следующую команду:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Удаление устаревшей локальной ветки удаленного отслеживания происхождения / X
Если вы не удалили свою удаленную ветку X
из командной строки (как описано выше), то ваше локальное хранилище будет по-прежнему содержать (уже устаревшую) ветку удаленного отслеживания origin/X
. Это может произойти, если вы, например, удалили удаленную ветку напрямую через веб-интерфейс GitHub.
Типичный способ удалить эти устаревшие ветви удаленного отслеживания (начиная с Git версии 1.6.6) - просто запустить git fetch
с --prune
или более коротким -p
. Обратите внимание, что при этом удаляются все устаревшие локальные ветви удаленного отслеживания для любых удаленных ветвей, которые больше не существуют на удаленном :
git fetch origin --prune
git fetch origin -p # Shorter
Вот соответствующая цитата из 1.6.6 примечаний к выпуску (выделено мной):
опции "git fetch" изучены --all
и --multiple
, для запуска выборки из
множество репозиториев и опция --prune
для удаления удаленного отслеживания
ветки, которые устарели. Они делают "git remote update" и "git
удаленный чернослив "менее необходимо (нет плана удалить" удаленный
обновить ", ни" удаленного удаления ", хотя).
Альтернатива вышеуказанному автоматическому сокращению устаревших ветвей удаленного отслеживания
В качестве альтернативы, вместо удаления устаревших локальных веток удаленного отслеживания с помощью git fetch -p
, вы можете избежать выполнения дополнительной сетевой операции , просто удаляя ветки (ветки) вручную с помощью --remote
или -r
флаги:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
См. Также