Попытка понять / определить основной рабочий процесс 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
между одной стадией жизненного цикла разработки и следующей.