Как удалить ветку в Git локально и удаленно

Одна из самых сильных сторон Git – его легкие ветки. Они позволяют эффективно работать над параллельными этапами разработки. Разработчик может даже создать отдельные ветки для отдельных ошибок. И во времени, и в пространстве филиалы почти бесплатны.

Многие рабочие процессы git имеют дело как с долгосрочными, так и с временными ветвями. Поэтому во время разработки часто возникает необходимость удалять ветки. Иногда возникает необходимость удалить общие ветки с удаленного сервера, а также локальные ветки.

Зачем удалять ветку?

Во-первых, если вы все еще осваиваете git , вполне вероятно, что вы создадите ветку, а затем решите, что в этом нет необходимости. Или вы можете экспериментировать с ветками и желать убрать после себя. Это нормально, поскольку ветвление в git – это легкая операция. Это очень быстро и эффективно использует дисковое пространство.

В результате многие рабочие процессы разработки git поощряют ветвление даже для очень маленьких или коротких задач. Например, распространенной стратегией является создание ветки для исправления одной ошибки. Это верно даже в том случае, если всего один автор вносит однострочное изменение в один файл.

По этим причинам создание и удаление веток – это операции, которые необходимо хорошо понимать. Вы можете часто удалять ветки во время типичного рабочего процесса разработки.

Пример репозитория с ветвями

Следующие примеры относятся к образцу репозитория со следующей структурой:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

Обратите внимание, что каждая локальная ветвь имеет соответствующую восходящую ветвь от remote: origin .

Удаление ветки с помощью командной строки

Основной синтаксис команды для удаления ветки:

 git branch (-d | -D) [-r] <branchname>...

В простейшей форме команда удаляет локальную ветку при условии, что все ее изменения были объединены:

 $ git branch -d dev

Вы не можете удалить ветку, которая активна в данный момент; если вы попытаетесь это сделать, вы получите такое сообщение:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Когда все пойдет хорошо, вы увидите подтверждающее сообщение:

 Deleted branch dev (was 1ae41e8).

Если вы удалите ветвь, которая существует только локально, с не объединенными изменениями, вы потеряете эти изменения. Следовательно, по умолчанию git откажется удалять ветку в такой ситуации:

 error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

Как сообщает сообщение об ошибке, вы можете принудительно удалить с помощью флага -D . Однако git позволит вам удалить не объединенную локальную ветку, если она существует удаленно:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

Другое дело удаление удаленной ветки. Для удаления вы будете использовать команду git push вместе с флагом -d . После этого укажите имя удаленного (часто origin ) и имя ветки:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

Удаление локальных и удаленных ветвей с помощью рабочего стола GitHub

В отличие от программы git из командной строки, настольное приложение GitHub позволяет удалить только активную ветку. Вы можете выполнить это действие через меню Branch , выбрав опцию Delete и подтвердив ее:

GitHub Desktop не позволит вам удалить ветку по умолчанию, например, main, хотя сам git поддерживает это. Если ветвь по умолчанию является активной в данный момент, приложение отключает действие меню.

Если ветка также представляет собой удаленную ветвь, GitHub Desktop также дает возможность удалить ее с удаленного компьютера:

Удаление веток с помощью GitKraken

GitKraken отображает локальную и удаленную ветки вашего репозитория на левой боковой панели. Вы должны удалить каждую отдельно .

Наведите указатель мыши на соответствующее имя ветки и щелкните меню «Действия ветки», которое выглядит как три вертикальные точки. В меню выберите Удалить <название ветки> :

Вы увидите подтверждающее сообщение о том, что это деструктивная операция. Вы можете подтвердить, что хотите продолжить, нажав кнопку Удалить :

Отражая поведение программы командной строки git по умолчанию, вы должны сначала переключиться на ветку, отличную от той, которую вы удаляете . В противном случае вы увидите сообщение об ошибке:

Удаление локальных и удаленных веток с помощью Tower

Удаление ветки с помощью Tower очень похоже на удаление ветки с помощью GitKraken. Локальные и удаленные ветви показаны на панели слева. Щелкните правой кнопкой мыши любую ветку и выберите в контекстном меню опцию Удалить:

Одно из ключевых отличий заключается в том, что удаленную ветку можно удалить вместе с локальной веткой во время подтверждения:

Удаление ветки на GitHub

GitHub действует только как удаленный источник, поэтому ветки по умолчанию являются удаленными. Если вы удалите ветку с помощью веб-сайта GitHub, вам придется удалить соответствующую локальную ветку одним из других способов, описанных здесь.

Как и в случае с настольным приложением GitHub, веб-сайт GitHub не позволит вам удалить ветку по умолчанию. Варианта просто не появляется. Однако удалить ветку несложно. На странице кода репозитория щелкните ссылку веток , найдите ветку, которую нужно удалить, затем нажмите значок Удалить эту ветку , который выглядит как мусорная корзина:

Имейте в виду, что здесь нет проверок на наличие изменений без объединения, поэтому на GitHub ветка будет просто немедленно удалена. Однако, поскольку он всегда будет представлять удаленную ветку, вы ожидаете именно такого поведения.

Обратите внимание, что после удаления вы увидите кнопку Восстановить ветку. Однако это просто полезная функция отмены, если вы случайно нажмете значок удаления. Не надейтесь на это, потому что как только вы обновите страницу или уйдете со страницы, вы потеряете эту возможность!

Удаление локальных и удаленных веток на Bitbucket

Bitbucket, как и GitHub, не позволяет удалить ветку по умолчанию. Bitbucket называет это основной веткой в настройках репозитория . Вы можете удалить любую другую ветку, указанную на вкладке « Ветви », через соответствующее меню « Действия» :

Вы также можете удалить более одной ветки одновременно, если выполняете большую операцию по очистке:

Удаление веток – часть типичного рабочего процесса Git

Ветви Git могут усложнить ваш рабочий процесс, особенно с локальными, удаленными и отслеживающими ветвями. Но для простой повседневной разработки вы, вероятно, будете постоянно создавать и удалять локальные ветки. Это основной аспект типичного рабочего процесса git, к которому вы должны привыкнуть.