Git – популярная система контроля версий и необходимый инструмент в арсенале любого разработчика.
Ветки – неотъемлемая часть работы с Git. В этой статье вы узнаете, как их можно удалять.
Что такое ветки в Git?
Ветка – это снапшот проекта и всех его изменений с определённого момента времени.
При работе над большим проектом главный репозиторий со всем кодом часто называют main
или master
.
Ветвление позволяет создавать новые независимые версии рабочего исходного кода. Ветки можно создавать, чтобы внести изменения, добавить новые функции или написать тест для исправления бага. Новая ветка позволяет делать это без вмешательства в основной код.
Итак, подведем итог: ветки позволяют вносить изменения в кодовую базу, не затрагивая основной код, до тех пор, пока вы не будете готовы включить эти изменения в проект.
Это поможет вам хранить свою кодовую базу в чистоте и порядке.
Зачем удалять ветки в Git?
Итак, вы создали ветку, чтобы работать в ней над какими-то изменениями. Затем вы слили свои изменения в исходную версию проекта.
Это значит, что вам больше не нужна ветка, в которой вы работали над изменениями. Удалить ее будет хорошим тоном: таким образом она не будет мешаться в вашем коде.
Как удалить локальную ветку в Git
Локальные ветки – это ветки на вашем компьютере, которые не влияют на ветки удаленного репозитория.
Команда для удаления локальной ветки в Git:
git branch -d local_branch_name
git branch
– команда для удаления локальной ветки.-d
– флаг, опция командыgit branch
, сокращенный вариант записи--delete
. Как и следует из названия, предназначен для удаления ветки.local_branch_name
– имя удаляемой ветки.
Давайте рассмотрим это подробнее на примере.
Следующая команда позволяет вывести список всех локальных веток:
git branch
У меня две ветки: cicd develop и master . Сейчас я нахожусь на develop
, на что указывает значок (*)
:
Я хочу удалить ветку cicd
. Но удалить ветку, в которой вы находитесь и которую просматриваете в данный момент, нельзя.
Если мы попытаемся это сделать, то получим примерно такую ошибку:
Так что перед удалением локальной ветки обязательно переключитесь на другую, которую не собираетесь удалять.
Переход делается при помощи команды git checkout
Для удаления ветки мы использовали команду git branch -d
. Но она работает не во всех случаях.
Если в ветке присутствуют несмерженные изменения или незапушенные коммиты, флаг -d не позволит удалить такую локальную ветку.
Это связано с тем, что эти коммиты нигде более не отслеживаются, и Git защищает вас от случайной потери этих данных.
Если все же попытаться удалить такую ветку, Git выдаст ошибку:
Как предложено в тексте ошибки, вы должны воспользоваться флагом -D
Флаг -D
с большой D (сокращенная запись опции --delete --force
), принудительно удаляет локальную ветку, вне зависимости от ее статуса мержа.
Используйте данную команду с осторожностью: после её ввода у вас не будут просить подтверждение удаления. Прибегайте к ней только когда абсолютно уверены, что хотите удалить локальную ветку.
Если вы не объединили её с другой локальной веткой или не запушили изменения в удаленный репозиторий, вы рискуете потерять все произведённые изменения.
Как удалить ветку в удалённом репозитории Git
Удалённые ветки существуют отдельно от локальных.
Это ветки в репозиториях на удалённых серверах, к которым мы имеем доступ. В этом заключается их отличие от локальных: последние находятся лишь у нас системе.
Команда удаления удалённой ветки:
git push remote_name -d remote_branch_name
- Вместо команды
git branch
, которая используется для локальных веток, удалить ветку в удалённом репозитории можно командойgit push
. - Затем указывается имя удалённого репозитория, в большинстве случаев это
origin
. -d
– флаг для удаления, сокращённый вариант опции--delete
.remote_branch_name
– имя удаляемой ветки.
Рассмотрим пример того, как можно удалить ветку в origin.
Чтобы увидеть все удалённые ветки, используйте эту команду:
git branch -a
Благодаря флагу -a
(сокращенная запись опции --all
) показываются все ветки: и удалённые, и локальные.
У меня созданы две локальные ветки (master и develop)
и две удалённые (origin/master
и origin/
dev).
Я хочу удалить ветку origin/dev
, поэтому я воспользуюсь следующей командой: