Публикация ветви функций для периодического предварительного просмотра в git

#git #preview #feature-branch

#git #Предварительный просмотр #ветка функций

Вопрос:

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

  1. Клиент запрашивает функцию.
  2. Я разрабатываю начальную функцию и публикую на сайте предварительного просмотра / тестирования.
  3. Клиент предоставляет обратную связь.
  4. Я вношу больше изменений.
  5. Перейдите к шагу 3 несколько раз.
  6. Клиент подходит для использования с функциями
  7. Перебазируйте функцию в один коммит, отправленный на производственный сайт.

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

 git checkout -b new_feature
...hack hack hack...
git add .
git commit -m "WIP"
git checkout preview
git merge new_feature
... feedback and another feature got approved and merged with master ...
git checkout new_feature
git merge master
... hack hack hack...
git add .
git commit -m "WIP"
git checkout preview
git merge new_feature
... client approves work for release ....
git checkout new_feature
git rebase -i master
... squash all commits except the first which I reword with a good description...
git checkout master
git merge new_feature
git branch -d new_feature
git checkout preview
git merge master
git checkout master
  

Итак, конечный результат:

  1. Я смог разработать функцию в ее собственной изолированной ветке и контролировать, когда она будет запущена в производство. Она также сворачивается в производство как приятный аккуратный коммит.
  2. Клиент может видеть функцию по мере ее разработки и оставлять отзывы. Они также могут видеть эту функцию вместе с другими функциями, которые я разрабатываю одновременно.
  3. Ветка «предварительный просмотр» становится немного запутанной, поскольку она получает как коммиты «WIP», так и окончательный перебазированный коммит. Но я не возражаю против этого, поскольку это только для предварительного просмотра клиента, и я могу периодически удалять ветку и создавать заново из master, если захочу.

Моя единственная проблема в том, что у меня, похоже, больше конфликтов, чем я ожидал. Я думаю, это связано с тем, что staging получает как коммиты разработки, так и окончательный коммит. Мне также интересно, есть ли лучший способ сделать это?

Комментарии:

1. Как насчет простого переключения репозитория предварительного просмотра, чтобы он находился в ветке new_feature? Тогда вам не нужно будет постоянно выполнять слияние.

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

Ответ №1:

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

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

Когда я объединяюсь, я использую git merge --no-ff new_feature . Это сохраняет информацию о существовании ветки функций, так что вы сразу узнаете, какие коммиты вошли в каждую функцию:

git merge --no-ff

Источник изображения — успешная модель ветвления Git

Комментарии:

1. Спасибо за предложение. Для меня перебазирование позволяет мне отбросить много неважных вещей и четко видеть в истории каждую добавленную функцию. Для меня я бы предпочел видеть: ——— 1. Реализованная функция foo ——— чем: ——— 1. Запущена функция foo 2. Возвращена часть функции foo 3. Забыл файл в фиксации 4. Удалите ошибку 5. Наконец-то закончена функция foo 6. Забыл о X для feature foo ——— Просто кажется более понятным и понятным. Я думаю, для меня все эти небольшие коммиты — это просто «незавершенная работа», и их не очень важно отслеживать.

2. @Eric По моему опыту, коммит типа «2. Возвращенная часть функции foo» очень полезен, когда один из ваших конечных пользователей решает, что они хотят, чтобы эта функциональность была добавлена обратно. Однако, что бы ни работало для вас, не существует единственно правильного способа использования git.