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


94

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

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

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

Ответы:


73

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


Вы сказали, что все коммиты по-прежнему доступны в истории. Если я просматриваю проект на github.com, я обнаруживаю, что это правда. Однако в настольном приложении Github для Mac кажется, что вы больше не можете видеть историю коммитов для объединенной ветки. Я ошибаюсь?
peacetype

Я бы добавил, что если вы не используете клиент git, особенно с графическим интерфейсом, то наличие веток может быть полезно для хорошего понимания вашего журнала. То есть, поскольку у вас нет графического интерфейса github / gitlab / другого для просмотра, сохранение имен веток позволяет вам иметь простое место для ссылки на историю в дополнение к истории фиксации, которая в противном случае теряется при удалении ветки. Кто-нибудь, пожалуйста, дайте мне знать, если это последнее утверждение неверно.
Радж

@Raj у вас это уже есть в виде Merge branch fix-foo-barсообщений фиксации. Попробуйте git log --grep="Merge branch", а затем сбросьте интересующие вас якоря через git checkout -b curious-change. Кроме того, при удалении ветки ничего не теряется - кроме простого указателя «имя ветки → commithash» (которым на самом деле является ветка, не имеет значения локальная или удаленная).
ulidtko

@ fred-foo Однако нет ответа на вопрос, является ли это хорошей практикой. (У меня тот же вопрос)
Эсгер

27

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

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

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

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


3
Очевидно, GitHub всегда использует --no-ff, поэтому мы не упустим тот факт, что это была ветка даже в тех ситуациях.
joeytwiddle 08

7
@joeytwiddle: если вы используете собственный интерфейс GitHub для слияния ветки, да!
Ашера

1

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

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.