Должен ли я удалить ветку после ее слияния?

После слияния ветки вы удаляете ее из репозитория?
Тем не менее, это хорошая практика или нет?

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

Обычно как это удается?


person tampe125    schedule 26.05.2012    source источник


Ответы (4)


Нет проблем с удалением веток, которые были объединены. Все коммиты по-прежнему доступны в истории, и даже в интерфейсе GitHub они все равно будут отображаться (см., например, этот PR, который относится к форку, который я удалил после того, как PR был принят).

person Fred Foo    schedule 26.05.2012
comment
Вы сказали, что все коммиты все еще доступны в истории. Если я просматриваю проект на github.com, я понимаю, что это правда. Однако в настольном приложении Github для Mac кажется, что вы больше не можете видеть историю коммитов для объединенной ветки. Я ошибаюсь? - person peacetype; 10.12.2015
comment
Я бы добавил, что если вы не используете клиент git, особенно не используете его с графическим интерфейсом, то наличие веток может быть полезно для хорошего понимания вашего журнала. То есть, поскольку у вас нет github/gitlab/другого графического интерфейса для просмотра, сохранение имен веток позволяет вам иметь простое место для ссылки на историю в дополнение к истории коммитов, которая в противном случае теряется при удалении ветки. Кто-нибудь, пожалуйста, дайте мне знать, если это последнее утверждение неверно. - person Raj; 26.10.2016
comment
@Raj, у тебя это уже есть, в виде Merge branch fix-foo-bar сообщений фиксации. Попробуйте git log --grep="Merge branch", а затем отправьте свои собственные якоря через git checkout -b curious-change. Кроме того, при удалении ветки ничего не теряется -- кроме простого имени ветки → указатель фиксации хэша (что и есть ветка на самом деле, не имеет значения, локальная или удаленная). - person ulidtko; 13.05.2019
comment
@fred-foo Однако на вопрос, является ли это хорошей практикой, нет ответа. (У меня такой же вопрос) - person Esger; 02.09.2020

Я определенно очищаю свои ветки после того, как они были объединены.

В работе используем GitLab и мерж-реквесты, поэтому историческая информация о ветках хранится там; Мне не нужно, чтобы они загромождали мой список веток, и когда я смотрю на ветку коллеги, в идеале я хотел бы видеть только ветки их текущей активной разработки. Если я пытаюсь просмотреть какой-то код в их ветке, я хочу иметь возможность просматривать только несколько активных в настоящее время веток, а не каждую функцию или исправление, над которыми они когда-либо начинали работать.

Вышесказанное также относится к BitBucket и GitHub.

Единственная причина, по которой вы можете не удалять ветку после слияния, заключается в том, что вы знаете, где закончилась данная функция, но коммиты слияния (и git merge --no-ff, если вы действительно хотите) делают это неуместным.

person Asherah    schedule 26.05.2012
comment
По-видимому, GitHub всегда делает --no-ff, поэтому мы не потеряем тот факт, что это была ветка даже в таких ситуациях. - person joeytwiddle; 08.08.2014
comment
@joeytwiddle: если вы используете собственный интерфейс GitHub для слияния ветки, да! - person Asherah; 09.08.2014

Просто позаботьтесь о том, чтобы
все гиперссылки URL-адресов ваших УДАЛЕННЫХ ветвей были СЛОМНЫМИ.

Например
Если вы удалите branch_feature_x ветку из своего репозитория
Соответствующий URL-адрес гиперссылки этой ветки будет неработающим
https://github.com/username/project/tree/branch_feature_x

person ahmednabil88    schedule 23.10.2019

Просто чтобы уточнить, ветвь, с точки зрения git, это просто ссылка на какой-то коммит. Удалив ветку, вы не удалите коммиты из репозитория git. Конечно, отдельные коммиты через некоторое время будут очищены сборщиком мусора git.

К вашему сведению: обычно мы объединяем ветки в master через интерфейс bitbucket. Там вы можете установить флаг delete feature branch after merge.

Если вам нужно иметь дело со слишком старыми ветками, вы можете поискать некоторые утилиты, например этот .

person AGrigorii    schedule 29.05.2020
comment
Обязательно ознакомьтесь с правилами саморекламы Stack Overflow. Как минимум, вам нужно раскрыть свою принадлежность к утилите, которую вы предлагаете. - person Jeremy Caney; 09.12.2020