gitlab — удаление ветки
Экспериментировал тут с gitlab. Создал тестовую ветку, запросил merge request и т.п.
Потом в вебе удалил свою ветку и в вебе gitlab её больше нет. Но локально при вводе:
$git branch -a
ветка всё ещё отображается и попытка её удалить неудается:
$git push origin :mytest error: unable to delete 'mytest': remote ref does not exist
По всей видимости ветки и правда нет, но как мне удалить её вывод через git branch -a ?

Psilocybe ★★★★
14.12.22 12:06:24 MSK
- Ответить на это сообщение
- Ссылка

Эм, git branch -d branch_name или git branch -D branch_name ?
EXL ★★★★★
( 14.12.22 12:15:14 MSK )
- Ответить на это сообщение
- Показать ответ
- Ссылка
Ответ на: комментарий от EXL 14.12.22 12:15:14 MSK

Это же для локальной ветки.
Проблема с моей удаленной (remote) веткой.
* main remotes/origin/HEAD -> origin/main remotes/origin/main remotes/origin/mytest
Psilocybe ★★★★
( 14.12.22 15:49:24 MSK ) автор топика
Последнее исправление: Psilocybe 14.12.22 15:52:51 MSK (всего исправлений: 2)
- Ответить на это сообщение
- Показать ответы
- Ссылка
Ответ на: комментарий от Psilocybe 14.12.22 15:49:24 MSK
git — это распределенная система версий, у каждой стороны свой репозиторий.
Сначала ты удалил ветку в репозитории gitlab, она уже удалена. Затем удаляешь у себя: git branch -d branch_name
Если кто-то успел склонировать себе, то у него тоже будет эта ветка, и её уже никак не удалишь.
emorozov ☆
( 14.12.22 15:53:06 MSK )
- Ответить на это сообщение
- Показать ответ
- Ссылка
3.3 Ветвление в Git — Управление ветками
Теперь, когда вы уже попробовали создавать, объединять и удалять ветки, пора познакомиться с некоторыми инструментами для управления ветками, которые вам пригодятся, когда вы начнёте использовать ветки постоянно.
Команда git branch делает несколько больше, чем просто создаёт и удаляет ветки. При запуске без параметров, вы получите простой список имеющихся у вас веток:
$ git branch iss53 * master testing
Обратите внимание на символ * , стоящий перед веткой master : он указывает на ветку, на которой вы находитесь в настоящий момент (т. е. ветку, на которую указывает HEAD ). Это означает, что если вы сейчас сделаете коммит, ветка master переместится вперёд в соответствии с вашими последними изменениями. Чтобы посмотреть последний коммит на каждой из веток, выполните команду git branch -v :
$ git branch -v iss53 93b412c Fix javascript issue * master 7a98805 Merge branch 'iss53' testing 782fd34 Add scott to the author list in the readme
Опции —merged и —no-merged могут отфильтровать этот список для вывода только тех веток, которые слиты или ещё не слиты в текущую ветку. Чтобы посмотреть те ветки, которые вы уже слили с текущей, можете выполнить команду git branch —merged :
$ git branch --merged iss53 * master
Ветка iss53 присутствует в этом списке потому что вы ранее слили её в master . Те ветки из этого списка, перед которыми нет символа * , можно смело удалять командой git branch -d ; наработки из этих веток уже включены в другую ветку, так что ничего не потеряется.
Чтобы увидеть все ветки, содержащие наработки, которые вы пока ещё не слили в текущую ветку, выполните команду git branch —no-merged :
$ git branch --no-merged testing
Вы увидите оставшуюся ветку. Так как она содержит ещё не слитые наработки, попытка удалить её командой git branch -d приведёт к ошибке:
$ git branch -d testing error: The branch 'testing' is not fully merged. If you are sure you want to delete it, run 'git branch -D testing'.
Если вы действительно хотите удалить ветку вместе со всеми наработками, используйте опцию -D , как указано в подсказке.
Если в качестве аргумента не указан коммит или ветка, то опции —merged и —no-merged покажут что уже слито или не слито с вашей текущей веткой соответственно.
Вы всегда можете указать дополнительный аргумент для вывода той же информации, но относительно указанной ветки предварительно не извлекая и не переходя на неё.
$ git checkout testing $ git branch --no-merged master topicA featureB
Переименование ветки
Не переименовывайте ветки, которые всё ещё используются другими участниками. Не переименовывайте ветку в master/main/mainline, не прочитав раздел «Изменение имени главной ветки».
Предположим, у вас есть ветка с именем bad-branch-name , и вы хотите изменить её на corrected-branch-name , сохранив при этом всю историю. Вместе с этим, вы также хотите изменить имя ветки на удалённом сервере (GitHub, GitLab или другой сервер). Как это сделать?
Переименуйте ветку локально с помощью команды git branch —move :
$ git branch --move bad-branch-name corrected-branch-name
Ветка bad-branch-name будет переименована в corrected-branch-name , но это изменение пока только локальное. Чтобы все остальные увидели исправленную ветку в удалённом репозитории, отправьте её туда:
$ git push --set-upstream origin corrected-branch-name
Теперь проверим, где мы сейчас находимся:
$ git branch --all * corrected-branch-name main remotes/origin/bad-branch-name remotes/origin/corrected-branch-name remotes/origin/main
Обратите внимание, что текущая ветка corrected-branch-name , которая также присутствует и на удалённом сервере. Однако, старая ветка всё ещё по-прежнему там, но её можно удалить с помощью команды:
$ git push origin --delete bad-branch-name
Теперь старое имя ветки полностью заменено исправленным.
Изменение имени главной ветки
Предупреждение
Изменение имени ветки, например master/main/mainline/default, сломает интеграции, службы, вспомогательные утилиты и скрипты сборки, которые использует ваш репозиторий. Прежде чем сделать это, обязательно проконсультируйтесь с коллегами. Также убедитесь, что вы выполнили тщательный поиск в своём репозитории и обновили все ссылки на старое имя ветки в вашем коде или скриптах.
Переименуйте локальную ветку master в main с помощью следующей команды:
$ git branch --move master main
После этого, локальной ветки master больше не существует, потому что она была переименована в ветку main .
Чтобы все остальные могли видеть новую ветку main , вам нужно отправить её в общий репозиторий. Это делает переименованную ветку доступной в удалённом репозитории.
$ git push --set-upstream origin main
В итоге, состояние репозитория становится следующим:
$ git branch --all * main remotes/origin/HEAD -> origin/master remotes/origin/main remotes/origin/master
Ваша локальная ветка master исчезла, так как она заменена веткой main . Ветка main доступна в удалённом репозитории. Старая ветка master всё ещё присутствует в удалённом репозитории. Остальные участники будут продолжать использовать ветку master в качестве основы для своей работы, пока вы не совершите ряд дополнительных действий.
Теперь, для завершения перехода на новую ветку перед вами стоят следующие задачи:
- Все проекты, которые зависят от текущего, должны будут обновить свой код и/или конфигурацию.
- Обновите конфигурацию всех запускаемых тестов.
- Исправьте скрипты сборки и публикации артефактов.
- Поправьте настройки репозитория на сервере: задайте новую ветку по умолчанию, обновите правила слияния, а также прочие настройки, которые зависят от имени веток.
- Обновите документацию, исправив ссылки, указывающие на старую ветку.
- Слейте или отмените запросы на слияние изменений, нацеленные на старую ветку.
После того, как вы выполнили все эти задачи и уверены, что ветка main работает так же, как ветка master , вы можете удалить ветку master :
$ git push origin --delete master
Удаление ветви Git
В этой статье описывается, как удалить ветвь Git двумя разными способами: в Visual Studio и из командной строки.
При удалении ветви в локальном репозитории в удаленном репозитории ветвь не удаляется.
- Браузер
- Visual Studio
- Командная строка
- Просмотрите ветви репозитория, выбрав Ветви репозитория>во время просмотра репозитория в Интернете.

- Нажмите кнопку Дополнительные параметры в конце строки ветви, которую нужно удалить.

- В меню параметров выберите Удалить ветвь.
- В диалоговом окне Удаление ветви выберите Удалить.
Чтобы удалить ветвь, выполните следующие действия.
- В меню Git в строке меню выберите Управление ветвями.
- В разделе Ветви щелкните правой кнопкой мыши ветвь и выберите Удалить. Если у вас есть неопубликованные изменения, Visual Studio запросит, действительно ли вы хотите удалить ветвь.
Visual Studio 2019 версии 16.8 и более поздних версий предоставляет возможности управления версиями Git, сохраняя при этом пользовательский интерфейс Team Обозреватель Git. Чтобы использовать командную Обозреватель, снимите флажок Сервис>Параметры>Предварительные версии функций>Новый пользовательский интерфейс Git в строке меню. Вы можете использовать функции Git из любого интерфейса взаимозаменяемо.
- Откройте командную Обозреватель и перейдите в представление Ветви.
- Найдите ветвь, которую требуется удалить. Помните, что вы не можете удалить ветвь, в которую вы работаете в данный момент.
- Щелкните правой кнопкой мыши имя ветви и выберите Удалить. Visual Studio спросит, действительно ли вы хотите удалить ветвь, если у вас есть неопубликованные изменения.
Удаленную ветвь можно удалить с помощью того же метода. Найдите дерево удаленного репозитория в представлении Ветви команды Обозреватель (например remotes/origin , ), щелкните правой кнопкой мыши и выберите Удалить.
Удалите локальную ветвь с помощью git branch -d команды при извлечении в другую ветвь.
git branch -d
Для удаления удаленной ветви требуется использовать git push команду с параметром —delete .
git push origin --delete
Как удалить ветку в Git

Git – популярная система контроля версий и необходимый инструмент в арсенале любого разработчика.
Ветки – неотъемлемая часть работы с Git. В этой статье вы узнаете, как их можно удалять.
Что такое ветки в Git?
Ветка – это снапшот проекта и всех его изменений с определённого момента времени.
При работе над большим проектом главный репозиторий со всем кодом часто называют main или master .
Ветвление позволяет создавать новые независимые версии рабочего исходного кода. Ветки можно создавать, чтобы внести изменения, добавить новые функции или написать тест для исправления бага. Новая ветка позволяет делать это без вмешательства в основной код.
Итак, подведем итог: ветки позволяют вносить изменения в кодовую базу, не затрагивая основной код, до тех пор, пока вы не будете готовы включить эти изменения в проект.
Это поможет вам хранить свою кодовую базу в чистоте и порядке.
От редакции Techrocks. Не всегда для работы над отдельными фичами создаются отдельные ветки. На эту тему можно почитать статью «Что такое Trunk Based Development (TBD)?»
Зачем удалять ветки в Git?
Итак, вы создали ветку, чтобы работать в ней над какими-то изменениями. Затем вы слили свои изменения в исходную версию проекта.
Это значит, что вам больше не нужна ветка, в которой вы работали над изменениями. Удалить ее будет хорошим тоном: таким образом она не будет мешаться в вашем коде.
Как удалить локальную ветку в Git
Локальные ветки – это ветки на вашем компьютере, которые не влияют на ветки удаленного репозитория.
Команда для удаления локальной ветки в Git:
git branch -d local_branch_name
- git branch – команда для удаления локальной ветки.
- -d – флаг, опция команды git branch , сокращенный вариант записи —delete . Как и следует из названия, предназначен для удаления ветки.
- local_branch_name – имя удаляемой ветки.
Давайте рассмотрим это подробнее на примере.
Следующая команда позволяет вывести список всех локальных веток:
git branch
У меня две ветки: master и test2 . Сейчас я нахожусь на test2 , на что указывает значок (*) :

Я хочу удалить ветку test2 . Но удалить ветку, в которой вы находитесь и которую просматриваете в данный момент, нельзя.
Если мы попытаемся это сделать, то получим примерно такую ошибку:

Так что перед удалением локальной ветки обязательно переключитесь на другую, которую не собираетесь удалять.
Переход делается при помощи команды git checkout :
git checkout branch_name # branch_name – имя ветки, на которую нужно перейти # в моём случае альтернативная ветка – master, поэтому я сделаю так: # git checkout master

Теперь можно удалять ветку:

Для удаления ветки мы использовали команду git branch -d . Но она работает не во всех случаях.
Если в ветке присутствуют несмерженные изменения или незапушенные коммиты, флаг -d не позволит удалить такую локальную ветку.
Это связано с тем, что эти коммиты нигде более не отслеживаются, и Git защищает вас от случайной потери этих данных.
Если все же попытаться удалить такую ветку, Git выдаст ошибку:

Как предложено в тексте ошибки, вы должны воспользоваться флагом -D :
git branch -D local_branch_name
Флаг -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 и test ) и две удалённые ( origin / master и origin / test ).
Флаг -r ( сокращенная запись опции —remotes ) позволяет вывести только удалённые репозитории.

Я хочу удалить ветку origin/test , поэтому я воспользуюсь следующей командой:
git push origin -d test

Мы стёрли ветку test в удалённом репозитории origin . Поэтому origin/test больше нет:

Заключение
Теперь вы знаете, как избавляться от локальных и удалённых веток в Git. Спасибо за внимание и удачи!