короткие ответы
Если вам нужны более подробные объяснения следующих команд, см. Подробные ответы в следующем разделе.
Удаление удаленной ветки
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 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 remote-tracking branches
git fetch <remote> -p # Shorter
длинный ответ: нужно удалить три разных ветки!
Когда вы имеете дело с удалением веток как локально, так и удаленно, имейте в виду, что задействованы три разных ветки:
- Местное отделение
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
options для запуска выборки из многих репозиториев и --prune
параметр для удаления ветвей удаленного отслеживания, которые устарели. Они делают "git remote update" и "git remote prune" менее необходим (однако нет плана удалять "удаленное обновление" или "удаленное удаление").
Альтернатива вышеуказанной автоматической обрезке для устаревших веток удаленного отслеживания
В качестве альтернативы, вместо удаления устаревших локальных ветвей удаленного отслеживания с помощью git fetch -p
, вы можете избежать дополнительных сетевых операций, просто вручную удалив ветки с помощью флагов --remote
или -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Смотрите также
person
Community
schedule
30.05.2014
deleted remote-tracking branch
: см. github.com/git/git/commit/ - person VonC   schedule 25.05.2015