Как удалить ветку в Git
Удалить ветку у себя:
$ git branch -d fix-login
Deleted branch fix-login (was 4b58db5).Удалить ветку на сервере:
git push origin --delete fix-loginЭто две разные ветки: локальная и её копия на сервере. Удаление одной не трогает другую.
Ветка не слита: not fully merged
-d удаляет ветку, только если её коммиты уже слиты — в текущую ветку или в ту же ветку на сервере. Иначе Git откажется с сообщением the branch 'fix-login' is not fully merged и подскажет -D:
git branch -D fix-login-D удаляет ветку вместе с коммитами, которых больше нет ни в одной ветке. Найти их потом можно только по хешу через git reflog, и то недолго. Перед -D убедитесь, что работа в ветке не нужна или уже слита на сервере (например, pull request принят со склейкой коммитов).
Нельзя удалить текущую ветку
Ветку, на которой вы стоите, удалить нельзя — Git ответит cannot delete branch 'fix-login'. Сначала переключитесь на другую:
git switch main
git branch -d fix-loginВетки, которых на сервере уже нет
Ветку на сервере могли удалить коллеги или сам хостинг после слияния pull request. У вас в списке git branch -a она всё равно видна как remotes/origin/fix-login: это сохранённая копия с прошлого обмена. Убрать такие копии:
git fetch --pruneЧтобы Git делал это при каждом fetch и pull, включите настройку один раз:
git config --global fetch.prune trueЛокальные ветки --prune не трогает — их удаляют сами через git branch -d.
Вернуть удалённую ветку
При удалении Git пишет хеш последнего коммита: (was 4b58db5). По нему ветку можно создать заново:
git branch fix-login 4b58db5Если сообщение уже не видно, найдите коммит в git reflog — по сообщению коммита или по строке checkout: moving from fix-login to main. Ветка, удалённая на сервере, восстанавливается так же: создайте её у себя и отправьте git push -u origin fix-login.
Подводные камни
git push origin :fix-login— старая запись того же удаления на сервере, она встречается в инструкциях. Двоеточие перед именем легко поставить случайно — используйте понятный--delete.- Защищённые ветки (обычно
main) хостинг удалить не даст — это настраивается в параметрах репозитория на сайте.