Публикация ветки функций для предварительного просмотра в git
Я пытаюсь понять, как лучше иногда публиковать ветку функций в ветке предварительного просмотра для git. Вот моя установка:
- Клиент запрашивает функцию.
- Я разрабатываю начальную функцию и публикую для предварительного просмотра / тестирования сайта.
- Клиент предоставляет обратную связь.
- Я делаю больше изменений.
- Перейдите к шагу 3 несколько раз.
- Клиент хорош, чтобы пойти с функцией
- Перебазировать функцию в единый коммит, отправленный на производственную площадку.
Обратите внимание, что несколько различных функций могут быть разработаны одновременно, и существует только один сайт "предварительного просмотра", где клиент может видеть все эти функции по мере их разработки. Мой рабочий процесс 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
Итак, конечный результат:
- Я смог разработать эту функцию в ее отдельной изолированной ветке и контролировать ее, когда дело доходит до производства. Это также свернуто в производстве как хороший аккуратный коммит.
- Клиент может видеть эту функцию по мере ее разработки и предоставлять обратную связь. Они также могут видеть эту функцию наряду с другими функциями, которые я разрабатываю одновременно.
- Ветвь "предварительного просмотра" становится немного грязной, так как она получает как "WIP", так и окончательный перебазированный коммит. Но я не против, так как это только для предварительного просмотра клиента, и я могу периодически удалять ветку и заново создавать из мастера, если я хочу.
Моя единственная проблема в том, что у меня больше конфликтов, чем я ожидал. Я думаю, что это потому, что постановка получает как коммиты разработки, так и финальный коммит. Мне также интересно, есть ли лучший способ сделать это?
1 ответ
Ваш рабочий процесс выглядит нормально, за исключением того, что я не люблю сдавливать все коммиты из вашей ветки функций перед слиянием с мастером.
На мой взгляд, это не добавляет никакой ценности, и вы теряете потенциально важную информацию об эволюции функции.
Когда я сливаюсь, я использую git merge --no-ff new_feature
, Это сохраняет информацию о существовании ветви функции, так что вы сразу узнаете, какие коммиты вошли в каждую функцию:
Источник изображения - успешная модель ветвления Git