Публикация ветки функций для предварительного просмотра в git - PullRequest
2 голосов
/ 10 октября 2011

Я пытаюсь понять, как лучше публиковать ветку функций в ветке предварительного просмотра для 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», так и финальный перебазированный коммит. Но я не против, так как это только для предварительного просмотра клиента, и я могу периодически удалять ветку и заново создавать из мастера, если я хочу.

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

1 Ответ

0 голосов
/ 10 октября 2011

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

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

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

git merge --no-ff

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

...