Введение
Ветки являются частью ежедневного процесса разработки и одной из самых мощных функций Git. После слияния ветвь становится бесполезной, кроме как для исторических исследований. Обычной и рекомендуемой практикой является удаление ветки после успешного слияния.
В этом руководстве объясняется, как удалять локальные и удаленные ветки Git.
Удалить локальную ветку Git
Чтобы удалить локальную ветку Git, используйте команду git branch
с параметром -d
( --delete
):
git branch -d branch_name
Deleted branch branch_name (was 17d9aa0).
Если вы попытаетесь удалить ветку, содержащую изменения, которые еще не были объединены, появится следующее сообщение об ошибке:
error: The branch 'branch_name' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch_name'.
Как говорится в сообщении выше, вы можете принудительно удалить, используя параметр -D
, который является ярлыком для --delete --force
:
git branch -D branch_name
Обратите внимание, что если вы удалите неслитную ветку, вы потеряете все изменения в этой ветке.
Чтобы просмотреть все ветки, содержащие неслитые изменения, используйте команду git branch --no-merged
.
Если вы попытаетесь удалить текущую ветку, появится следующее сообщение:
error: Cannot delete branch 'branch_name' checked out at '/path/to/repository'
Вы не можете удалить ветку, в которой находитесь в данный момент. Сначала переключитесь на другую ветку, а затем удалите branch_name
:
git checkout master
git branch -d branch_name
Удалить удаленную ветку Git
В Git локальная и удаленная ветки — это отдельные объекты. Удаление локальной ветки не удаляет удаленную ветку.
Чтобы удалить удаленную ветку, используйте команду git push
с параметром -d
( --delete
):
git push remote_name --delete branch_name
Где remote_name
обычно origin
:
git push origin --delete branch_name
...
- [deleted] branch_name
Также существует альтернативная команда для удаления удаленной ветки, которую сложнее запомнить:
git push origin remote_name:branch_name
Если вы работаете над проектом с группой людей и пытаетесь удалить удаленную ветку, которая уже была удалена кем-то другим, вы получите следующее сообщение об ошибке:
error: unable to push to unqualified destination: branch_name The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to '[email protected]:/my_repo'
В подобных ситуациях вам потребуется синхронизировать список веток с:
git fetch -p
Параметр -p
указывает Git удалить все ссылки на удаленное отслеживание, которые больше не существуют в удаленном репозитории, перед извлечением.
Вывод
В этом руководстве вы узнали, как удалять локальные и удаленные ветки Git. Ветки в основном являются ссылкой на моментальный снимок изменений и имеют короткий жизненный цикл. Как только ветвь объединена с мастером (или другой основной ветвью), она больше не нужна и должна быть удалена.