Мы относительно новички в git в целом. Мы используем его около 6 месяцев и использовали GitHub и BitBucket. Мы постарались узнать как можно больше с помощью GitBash, чтобы понять суть git.
Мы находимся на этапе, когда мы действительно хотим рассмотреть нашу стратегию ветвления, и поэтому я провел некоторое исследование.
На мой взгляд, GitFlow слишком сложен для наших требований. Всего мы работаем примерно над 20 различными проектами, и каждый проект может выпускаться только каждые 2 месяца или около того. Глядя на GitHub Flow, это кажется довольно простым вариантом, который удовлетворит наши потребности, однако, похоже, у него есть недостаток, о котором я хотел бы узнать мнение людей.
Все в ветке master можно развернуть. Мы развертываем в средах UAT/QA, где этот выпуск может оставаться в течение 3-4 недель, в зависимости от того, сколько времени потребуется клиенту и/или нам, чтобы все подписать. Тем временем кому-то еще может понадобиться поработать над чем-то совершенно другим. На этом этапе, исходя из потока Github Flow, если этот пользователь взял ветку от Master, он будет включать изменения, которые на данный момент все еще находятся в среде QA. Итак, я неправильно понял первый пункт GitHub Flow — т. е. что-либо в основной ветке можно развернуть — возможно, это звучит правдоподобно только в том случае, если код прошел через QA и т. д.?
Если это так, действительно ли поток больше похож на?:
- Взять ветку от Мастера
- Зафиксировать изменения в ветке (на данном этапе только обратно в ветку)
- Объединить ветку с отдельной веткой под названием "Разработка"
- Выпуск для QA/UAT
- Когда выпуск утвержден, объединить ветку с мастером и развернуть?
Я думаю, что именно пункт 1 в GitHub Flow сбивает нас с толку — мы, конечно же, не должны возвращаться к Master, когда релиз все еще находится в QA — это сделает ветку Master потенциально нестабильной и, конечно же, не то, что в настоящее время находится в производстве.