Повторно использовать объединенную ветку, хорошая практика?

36

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

Когда моя функция закончена и функционирует, я объединяю ее с основной веткой.

Но позже, когда мне нужно обновить эту функцию (например, улучшение), лучше ли создать новую ветку или мне нужно перебазировать предыдущую с мастером, обновится ли затем обновление снова?

Например, у меня есть ветвь с названием моделирование-член в приложении Ruby on Rails. Позже мне нужно добавить некоторые атрибуты в модель члена (которая была создана в этой ветке). Что мне делать? Перебазировать эту ветку с мастером, обновить модель и объединить ее снова или просто создать новую ветку?

gaetanm
источник
1
Если ваш проект становится очень большим, то повторное использование старых веток будет очень трудоемким для переключения и / или обновления git. По сравнению с несколькими секундами, необходимыми для создания новой ветви.
Reactgular

Ответы:

34

Создайте новую ветку, потому что:

  • Совершенно новая ветвь с меньшей вероятностью столкнется с конфликтами слияния, когда вы закончите и захотите слить их в master. Немногие вещи более подвержены ошибкам, чем исправление конфликтов слияния.

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

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

Ixrec
источник
7

Используйте новую ветку.

Для именования вы можете использовать внутренний формат, который this_work является расширением или изменить на that_work

Например, вы можете назвать вторую ветку

modeling-member--attributes

с -, сигнализирующим, что имя имени слева является оригинальной веткой

Мы решаем несколько похожую проблему, так как мы используем номера билетов Jira для названий филиалов. Иногда есть дополнительная работа для того же билета. Иногда изменение базы данных не может быть отменено. В этих случаях мы используем, например, исходную ветку SEND-123 и вторую ветвь SEND-123a.

Майкл Даррант
источник
0

Если вы хотите сохранить только коммиты из слияния на главном сервере и используете github, вы можете использовать «Fork» для каждой новой функции, а также выполнять запрос на извлечение и принимать запрос на извлечение после выполнения каждой новой функции.

Я не рекомендую работать со старыми ветками, так как вы можете столкнуться с конфликтами, когда объедините их с главой мастера, и, конечно, в этом нет необходимости ...

Данило Перейра Де Лука
источник
4
«и» не является английским словом. Такие текстовые сообщения должны быть зарезервированы для текстов и твиттера.
Gort the Robot
@ Steven Теперь, даже там, когда для (большинства людей) каждая буква больше не требует трех или четырех нажатий клавиш, этого следует избегать. :)
TZHX