Git flow: гілки develop, release і hotfix
Модель гілок, зорієнтована на релізи: довгоживучі main і develop, гілки feature, release і hotfix, теги на main. Коли вона доречна (релізи через магазини застосунків, кілька підтримуваних версій), чому багато вебкоманд перейшли на GitHub flow чи trunk-based development і як упізнати модель за списком гілок.
Урок 11 з 15~34 хв навчанняЗ них ~22 хв на запитання та завдання
Зміст1 із 61 кроків
Ви
Alex Tutor
Daniel
Alex Tutor
main і develop, плюс три види тимчасових.Alex Tutor
2c71a0eVersion 2.7.0v2.7.04d8e2b1Update translations7a3f9c2Add reminder settingsc5e0d38Fix crash on loginhotfix/2.7.1e8b2f14Merge hotfix/2.7.1v2.7.10f6c3a9Merge hotfix/2.7.1 into develop91be4d7Send reminder notificationsfeature/workout-reminders5b9d7e2Merge feature/workout-remindersa4c1e86Bump version to 2.8.03e7f0b5Fix reminder text on small screensrelease/2.8.06d2a9f3Merge release/2.8.0mainv2.8.0b8e4c71Merge release/2.8.0 into developdevelop
Граф комітів, від найстарішого: Git flow у команді мобільного застосунку 1. коміт 2c71a0e у main "Version 2.7.0", тег v2.7.0 2. гілка develop починається від коміту 2c71a0e 3. коміт 4d8e2b1 у develop "Update translations" 4. гілка feature/workout-reminders починається від коміту 4d8e2b1 5. коміт 7a3f9c2 у feature/workout-reminders "Add reminder settings" 6. гілка hotfix/2.7.1 починається від коміту 2c71a0e 7. коміт c5e0d38 у hotfix/2.7.1 "Fix crash on login" (виділено) 8. мердж-коміт e8b2f14: hotfix/2.7.1 змерджено в main "Merge hotfix/2.7.1", тег v2.7.1 9. мердж-коміт 0f6c3a9: hotfix/2.7.1 змерджено в develop "Merge hotfix/2.7.1 into develop" 10. коміт 91be4d7 у feature/workout-reminders "Send reminder notifications" 11. мердж-коміт 5b9d7e2: feature/workout-reminders змерджено в develop "Merge feature/workout-reminders" 12. гілка release/2.8.0 починається від коміту 5b9d7e2 13. коміт a4c1e86 у release/2.8.0 "Bump version to 2.8.0" 14. коміт 3e7f0b5 у release/2.8.0 "Fix reminder text on small screens" 15. мердж-коміт 6d2a9f3: release/2.8.0 змерджено в main "Merge release/2.8.0", тег v2.8.0 16. мердж-коміт b8e4c71: release/2.8.0 змерджено в develop "Merge release/2.8.0 into develop"
Ви
Alex Tutor
main лише випущені версії, і кожен коміт у ній отримує тег: v2.7.0, v2.7.1, v2.8.0. У develop збирають наступну версію. В оригінальній статті першу гілку називали master.Daniel
feature/* для кожної фічі, release/* для підготовки однієї версії, hotfix/* для термінового виправлення того, що вже є в користувачів.develop окремою петлею. Саме так радить оригінальна модель.Alex Tutor
Питання 1
Зістав кожну гілку git flow з її роботою.
Торкніться відповіді, а потім рядка, до якого вона належить. Можна й перетягувати.
maindevelopfeature/workout-remindersrelease/2.8.0hotfix/2.7.1
Відповіді, які ще треба розмістити
Ви
develop, а не в main. Користувачі її тоді отримують?Daniel
develop означає «буде в наступній версії». Нагадування про тренування змерджили посеред спринту, а на телефони людей вони потрапили майже через два тижні.Alex Tutor
Ви
Daniel
Alex Tutor
Alex Tutor
Питання 2
У git flow, щойно feature/workout-reminders змерджено в develop, користувачі, які оновлять застосунок, отримають нагадування про тренування.
m1mainv2.7.1d1f1Add reminder settingsf2Send reminder notificationsfeature/workout-remindersd2develop
Граф комітів, від найстарішого: День, коли змерджили нагадування 1. коміт m1 у main, тег v2.7.1 2. гілка develop починається від коміту m1 3. коміт d1 у develop 4. гілка feature/workout-reminders починається від коміту d1 5. коміт f1 у feature/workout-reminders "Add reminder settings" 6. коміт f2 у feature/workout-reminders "Send reminder notifications" 7. мердж-коміт d2: feature/workout-reminders змерджено в develop (виділено)
Alex Tutor
develop набирається достатньо для наступної версії, від неї відрізають релізну гілку: release/2.8.0. З цієї миті це окрема доріжка.Daniel
Alex Tutor
develop лишається відкритою, тож нові фічі для 2.9.0 далі надходять. Коли реліз готовий, його мерджать у main, ставлять тег v2.8.0 і мерджать назад у develop, щоб його виправлення не загубилися.Ви
develop через день після того, як відрізали реліз?Daniel
Alex Tutor
Ви
Daniel
develop їде наступним потягом, якщо воно не настільки термінове, щоб робити хотфікс.Alex Tutor
Питання 3
Які фічі отримають користувачі у версії 2.8.0?
m1v2.7.0d1x1Add dark themefeature/dark-moded2y1Add daily step goalsfeature/step-goalsr1Bump version to 2.8.0d3developr2Fix dark theme coloursrelease/2.8.0m2mainv2.8.0
Граф комітів, від найстарішого: Дві фічі й одна релізна гілка 1. коміт m1 у main, тег v2.7.0 2. гілка develop починається від коміту m1 3. коміт d1 у develop 4. гілка feature/dark-mode починається від коміту d1 5. коміт x1 у feature/dark-mode "Add dark theme" 6. мердж-коміт d2: feature/dark-mode змерджено в develop 7. гілка feature/step-goals починається від коміту d2 8. коміт y1 у feature/step-goals "Add daily step goals" 9. гілка release/2.8.0 починається від коміту d2 10. коміт r1 у release/2.8.0 "Bump version to 2.8.0" 11. мердж-коміт d3: feature/step-goals змерджено в develop 12. коміт r2 у release/2.8.0 "Fix dark theme colours" 13. мердж-коміт m2: release/2.8.0 змерджено в main, тег v2.8.0 (виділено)
Ви
Daniel
hotfix/2.7.1 прямо від main, від тегу v2.7.0, виправили лише це і випустили за два дні.Alex Tutor
develop, де повно невипущеної роботи. Його мерджать у main з новим тегом v2.7.1 і в develop, щоб наступний реліз не повернув краш.Daniel
develop. У develop воно потрапить, коли реліз змерджать назад.Ви
Daniel
develop. Забудеш змерджити назад, і версія 2.8.0 знову падатиме під час входу. Я бачив таке один раз. Одного разу вистачило.Alex Tutor
Питання 4
Розстав кроки хотфіксу для крашу під час входу у версії 2.7.0 по порядку.
Торкніться пункту, а потім місця, куди його поставити. Можна перетягувати або користуватися стрілками.
Alex Tutor
Ви
Alex Tutor
develop здебільшого додає очікування й подвійні мерджі. Багато вебкоманд перейшли на GitHub flow або на trunk-based development (розробку в основній гілці): усі мерджать малі зміни в main щонайменше щодня, а флаги ховають те, що ще не готове.Daniel
Ви
Daniel
Alex Tutor
Питання 5
Якій команді git flow пасує найприродніше?
Alex Tutor
Alex Tutor
develop
Default (основна) · оновлено сьогодні
main
Оновлено 9 днів тому · тег v2.8.0
release/2.9.0
Оновлено вчора · на 3 коміти попереду develop
feature/step-goals
Оновлено 2 години тому · pull request у develop
hotfix/2.8.1
Оновлено годину тому · pull request у main
develop поруч із main, плюс назви release/… і hotfix/…: це git flow. Часто develop навіть основна гілка репозиторію, тож нові pull requests за замовчуванням ідуть у неї.Daniel
main і кілька свіжих гілок fix/… чи feature/… з pull requests: це GitHub flow, як у нас. Майже нічого, крім main, гілки живуть години, багато флагів: trunk-based.Ви
develop як основна, релізна гілка й хотфікс одночасно.Alex Tutor
Питання 6
Зістав список гілок кожного репозиторію з моделлю, яку там найімовірніше використовують.
Торкніться відповіді, а потім рядка, до якого вона належить. Можна й перетягувати.
main,develop(основна),release/3.2.0,hotfix/3.1.2, кількаfeature/…main, а такожfix/cart-roundingіcontent/faq-refresh, кожна кількаденна, з pull request уmain- Лише
mainі гілки віком кілька годин; незавершена робота схована за флагами
Відповіді, які ще треба розмістити
Alex Tutor
Daniel
Ви
Alex Tutor
Alex Tutor
Питання 7Коротка відповідь · Завдання з перевіркою ШІ
Ти продакт у старій команді Daniel, що робить застосунок. feature/workout-reminders змерджили в develop у вівторок. release/2.8.0 відрізають наступного понеділка, тиждень тестують, потім надсилають у магазини (перевірка зазвичай триває день-два). Маркетинг питає: «Нагадування змерджено, можна анонсувати в цю п'ятницю?» Дай відповідь у 2–3 реченнях.
Напишіть відповідь і отримайте оцінку та відгук від нашого ШІ-рецензента.
Увійдіть, щоб отримати відгук ШІВи
Alex Tutor
Daniel
develop. Частина «що змінилося» буде на наступному уроці: теги й нотатки до релізів.Alex Tutor
Alex Tutor
Питання 8Кейс · Завдання з перевіркою ШІ
Напиши CEO коротку рекомендацію: чи варто Котокорму переходити на git flow?
CEO почув, що компанія його знайомого «випускає релізи раз на місяць із гілкою develop», і каже, що це звучить безпечніше. Він питає, чи не зробити так само в Котокормі.
Що відомо про Котокорм: один сайт, одна жива версія; GitHub flow з короткими гілками; кожен мердж у main викладають за кілька хвилин; main захищена (лише через pull requests, щонайменше одне схвалення, обов'язкові перевірки build і test, гілка має бути актуальною перед мерджем); кожен pull request отримує preview; фіча-флаги ховають незавершену роботу (осінній банер з'явився вчасно в понеділок). У березні невдалий мердж відкотили за десять хвилин. Зараз ніхто не може сказати, яка версія на сайті, і нотаток до релізів немає.
Напиши 6–10 рядків: твою рекомендацію, що змінив би git flow, коли він мав би сенс і як відповісти на справжнє занепокоєння CEO.
Напишіть відповідь і отримайте оцінку та відгук від нашого ШІ-рецензента.
Увійдіть, щоб отримати відгук ШІВи
develop.Daniel
v1.4.0.Alex Tutor
На цьому все. Ви відповіли на всі завдання — чудова робота.