Чтобы расширить эти ответы, каждая ветвь в основном существует в трех местах:
- На удаленном сервере, например
origin/foo
- Ваша локальная копия
origin/foo
(которая обновляется с помощью git fetch
)
- Локальная ветвь
foo
(которая обновляется с помощью git merge origin/foo
после git fetch
- или, более часто, оба выполняются вместе с помощью git pull
).
git branch -d
удаляет последний из этих трех, а именно локальную ветвь. git branch -d -r
удалит вашу копию из удаленной ветви (или вы можете запустить git remote prune origin
после удаления локальных ветвей).
Чтобы удалить ветку на удаленном сервере, вы должны использовать git push
. Старый синтаксис для этого git push origin :branchname
. Это связано с тем, что синтаксис localref:remoteref
, например, можно перенести локальную ветку на вашем компьютере в удаленную ветку с другим именем, например, git push origin localbranch:remotebranch
. Если вы оставите часть localbranch
пустой, вы дадите команду git выдвинуть ничто в удаленную ветвь, удалив ее.
Если это сбивает с толку, не волнуйтесь, разработчики git согласны с вами. В более новых версиях есть опция --delete
, поэтому git push origin --delete branchname
делает то же самое, что и git push origin :branchname
, но ее цель гораздо более ясна.