Git: Удаление локальной ветки
Последнее обновление
После того как работа в ветке слита, вы удаляете её командой git branch -d <branch>. Git отказывается, если в ветке есть коммиты, которые нигде не слиты, - это проверка безопасности. Чтобы удалить её всё равно, используйте заглавную -D. Удаление локальной ветки никогда не затрагивает копию на удалённом репозитории; это отдельная команда.
Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего не нужно устанавливать.
Синтаксис
| Command | What it does |
|---|---|
git branch -d feature | Удаляет feature (только если она слита) |
git branch -D feature | Принудительно удаляет feature, даже если не слита |
git branch -d branch1 branch2 | Удаляет несколько веток сразу |
Частые случаи
| Goal | Command |
|---|---|
| Удалить слитую ветку | git branch -d old-feature |
| Принудительно удалить неслитую ветку | git branch -D scratch |
| Удалить ветку, на которой вы находитесь | git switch main затем git branch -d feature |
| Посмотреть, какие ветки слиты | git branch --merged |
Разбор примера
Завершите фичу, слейте её и подчистите локальную ветку.
| Step | Command | Result |
|---|---|---|
| 1 | git switch main | Уйдите с ветки, которую хотите удалить |
| 2 | git merge feature | Перенесите коммиты фичи в main |
| 3 | git branch -d feature | Удалите теперь уже слитую ветку |
Частые вопросы об удалении локальной ветки в Git
В чём разница между git branch -d и -D?
-d - это безопасное удаление: Git удаляет ветку, только если её коммиты уже слиты в другую ветку, поэтому вы не можете случайно потерять работу. -D - это принудительное удаление (сокращение от --delete --force): оно удаляет ветку в любом случае, даже если в ней есть неслитые коммиты. Используйте -d по умолчанию и прибегайте к -D только тогда, когда уверены, что хотите выбросить коммиты ветки.Как удалить ветку, на которой я сейчас нахожусь?
Вы не можете удалить ветку, которая у вас извлечена (checked out). Сначала переключитесь на другую ветку командой
git switch main (или git checkout main), а затем выполните git branch -d feature. Если попытаться удалить текущую ветку, Git выдаст ошибку "Cannot delete branch ... checked out".Удаляет ли удаление локальной ветки её на GitHub?
Нет.
git branch -d удаляет ветку только из вашего локального репозитория. Ветка на удалённом репозитории (GitHub, GitLab и т. д.) остаётся, пока вы не удалите её отдельно командой git push origin --delete feature.Можно ли восстановить удалённую ветку?
Обычно да, если это было недавно. Выполните
git reflog, чтобы найти коммит, на который указывала ветка, затем воссоздайте её командой git branch feature <commit-hash>. Коммиты не подвергаются сборке мусора сразу, поэтому ветку, удалённую по ошибке, обычно можно восстановить.Могу ли я попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнять эти команды в настоящей оболочке прямо в браузере - ничего не нужно устанавливать. Когда захотите структуры, бесплатный интерактивный курс по Git от Coddy проведёт вас от первого коммита через ветвление и слияние шаг за шагом.