Попытка понять / определить основной рабочий процесс Git

Я читал этот популярный документ снова и снова, чтобы попытаться составить свой собственный рабочий процесс git.

Я думаю, что у меня это получилось, но я все еще немного растерялся. Вот мое текущее понимание...



У нас есть две ветви, которые всегда будут оставаться активными.

  • Мастер: Здесь я буду выдвигать код, который фактически будет развернут на моем рабочем сервере и будет использоваться моими пользователями.
  • Разработка: это будет ответвление от основной ветки. Он будет включать все мои новые функции, исправления ошибок и т. Д., Которые будут добавлены в следующий выпуск.


У нас есть несколько тематических веток, которые будут разветвляться из ветки разработки (я думаю). Как только тема, например, ошибка исправлена, мы объединяем эту ветку с веткой разработки. Некоторые примеры:

  • Ветка ветки 1: feature-ajaxify-shoping-cart
  • Ветка ветки 2: bugfix-navbar-font-overlapping


Подготовить релиз

  • У нас есть 1 ветка релиза за раз, которая будет ветвиться от ветки функций.
  • Теперь мы извлекаем / объединяем все функции, исправления ошибок и т. Д., Которые мы хотим добавить в следующую версию.
  • Мы можем оставить некоторые функции, над которыми мы работаем, которых не будет в следующем выпуске (я думаю).


Создание релиза

  • После того, как вы будете удовлетворены выпусками, мы можем объединить эту ветку выпусков с основной веткой и присвоить коммиту что-то вроде 'v1.2.0'.
  • Мы также хотим пометить этот коммит 'v1.2.0', чтобы мы могли легко вернуться во времени и посмотреть релизы.


Дополнительные заметки, которые я выучил

Основная ветка всегда хороша и чиста, и содержит только коммиты, которые являются релизами (я думаю, поэтому у нас есть отдельная ветка релизов, верно?).

Пожалуйста, дайте мне знать, где я что-то напутал или неправильно истолковал и т.д. Спасибо!



1 ответ

Решение

Ваше резюме является точным: вы можете найти проиллюстрировано в этой таблице.

Имейте в виду, что для того, чтобы протестировать вашу функцию с другими, вы должны объединить их для разработки (git flow feature finish MYFEATURE).
Существует еще один рабочий процесс (рабочий процесс Git), который позволяет лучше продвигать функции (разрабатывать, а затем выпускать)

Разница в том, что:

  • с потоком мерзавца, многократным feature ветви объединены в devel (где они узнают, могут ли они работать вместе или нет), тогда release создан из devel (в этот момент удаление объектов становится сложным) перед объединением обратно в devel (а также master).
  • с gitworkflow:
    • feature ветви объединены в "public"Альфа" ветвь, которая сбрасывается после каждого выпуска (то есть, удаляется / воссоздается поверх нового выпуска)
    • затем подмножество тех же feature ветви объединены в "next"(" бета ") ветка для интеграции / приемочных испытаний. То"next"(" бета ") ветвь аналогично воссоздана поверх master после каждого нового выпуска.
    • затем подмножество feature ветви объединяются в master, чтобы подготовить следующий выпуск.

"public" а также "next"(иначеdevel') ветви никогда не объединяются с master, Они "временные" или "эфемерные", всегда удаляются / воссоздаются.
Только feature ветки объединяются с ветками жизненного цикла (public, next, master). Это означает, что в любое время вы можете отказаться от feature между одной стадией жизненного цикла разработки и следующей.

Другие вопросы по тегам