Я прочитал о модели ветвления Git @nvie и gitflow, и я думаю, что это хорошая модель для проекта (веб-приложения), над которым я сейчас работаю.
Я ведущий разработчик проекта, и я разрабатываю в локальной среде (как MAMP). Всякий раз, когда я делаю что-то, чтобы показать клиенту, я фиксирую свою работу и отправляю ее на центральный хост Git. Оттуда я развертываю его на сервере, подключенном к Интернету. Тогда мой клиент сможет увидеть изменения.
Второй разработчик только начал работать над проектом. Он разрабатывает отдельные функции за раз и отправляет их на центральный хост Git, когда они будут готовы. Я просматриваю его работу, прежде чем развертывать ее.
В настоящее время все коммиты выполняются в ветке master
и развертываются в одной размещенной среде. В будущем я хотел бы иметь производственную среду (для реального использования), тестовую среду (для тестирования новых версий приложения непосредственно перед их выпуском) и среду разработки (где я могу показать готовые функции или все еще в процессе до клиента). Я думаю, что производственная среда получит развертывание от master
, а среда разработки получит развертывание от develop
.
Вопросы у меня следующие:
Я часто работаю над несколькими задачами одновременно. Когда часть функции готова, я иногда хочу показать ее своему клиенту, прежде чем продолжить работу над этой функцией. Однако, насколько я понимаю, функция (ветвь) будет объединена с
develop
только тогда, когда она будет завершена и запланирована к выпуску. Как я могу показать функции, которые находятся в разработке (или еще не запланированы к выпуску) для моего клиента (в среде разработки)?Из какой ветки следует выполнить развертывание в тестовой среде? Должен ли я вручную выбрать ветку релиза на данный момент, или может быть выделенная ветка для тестирования?