GitHub flow: малі гілки, швидкі мерджі
Цикл, у якому працює більшість продуктових команд: гілка від main, pull request, рев'ю й перевірки, мердж, деплой. Чому малі короткоживучі гілки безпечніші, що означають «змерджено» і «викладено», як фіча-флаги дають викласти незавершену роботу прихованою і як читати прогрес фічі зі списку pull requests.
Урок 10 з 15~35 хв навчанняЗ них ~22 хв на запитання та завдання
Зміст1 із 63 кроків
Alex Tutor
Ви
Alex Tutor
Alex Tutor
e7c3b19Add summer promo bannere19c3b7Rewrite delivery page copyf02a6d4Update FAQ answers3a9d1c4Reproduce bug in a test8be2f70Add cat treats bundle5c1d7e2Set freeDeliveryFrom to 1000a8f40b9Update delivery page textd36b9c5Update cart hint textfeature/free-delivery-1000b7e4a05Re-enable button after cart edits6f2c8a1Raise free-delivery threshold to 1000 UAH (#133)c90d4e7Merge branch 'main' into content/delivery-copycontent/delivery-copya7d93e4Rewrite delivery page copy (#132)c2d7f90Update checkout hint copyf7a2b61Restore checkout button colour9e3b5d2Merge branch 'main' into fix/checkout-buttonfix/checkout-buttond51c7e8Fix checkout button after cart edits (#134)main
Граф комітів, від найстарішого: main за останні два тижні 1. коміт e7c3b19 у main "Add summer promo banner" 2. гілка content/delivery-copy починається від коміту e7c3b19 3. коміт e19c3b7 у content/delivery-copy "Rewrite delivery page copy" 4. коміт f02a6d4 у main "Update FAQ answers" 5. гілка fix/checkout-button починається від коміту f02a6d4 6. коміт 3a9d1c4 у fix/checkout-button "Reproduce bug in a test" 7. коміт 8be2f70 у main "Add cat treats bundle" 8. гілка feature/free-delivery-1000 починається від коміту 8be2f70 9. коміт 5c1d7e2 у feature/free-delivery-1000 "Set freeDeliveryFrom to 1000" 10. коміт a8f40b9 у feature/free-delivery-1000 "Update delivery page text" 11. коміт d36b9c5 у feature/free-delivery-1000 "Update cart hint text" 12. коміт b7e4a05 у fix/checkout-button "Re-enable button after cart edits" 13. коміт 6f2c8a1: feature/free-delivery-1000 змерджено в main через squash "Raise free-delivery threshold to 1000 UAH (#133)" 14. мердж-коміт c90d4e7: main змерджено в content/delivery-copy "Merge branch 'main' into content/delivery-copy" 15. коміт a7d93e4: content/delivery-copy змерджено в main через squash "Rewrite delivery page copy (#132)" 16. коміт c2d7f90 у fix/checkout-button "Update checkout hint copy" 17. коміт f7a2b61 у fix/checkout-button "Restore checkout button colour" 18. мердж-коміт 9e3b5d2: main змерджено в fix/checkout-button "Merge branch 'main' into fix/checkout-button" 19. коміт d51c7e8: fix/checkout-button змерджено в main через squash "Fix checkout button after cart edits (#134)" (виділено)
Ви
Daniel
main завжди є версією, яку можна викласти на сайт просто зараз. Усе незавершене чекає у своїй гілці або, як побачиш сьогодні, за перемикачем.Alex Tutor
main, pull request, мердж, деплой. А наступна зміна знову стартує від свіжої main.Alex Tutor
Питання 1
Розстав кроки GitHub flow у Котокормі по порядку: від ідеї до моменту, коли клієнти бачать зміну.
Торкніться пункту, а потім місця, куди його поставити. Можна перетягувати або користуватися стрілками.
Ви
Daniel
main, збирає сайт і викладає його на наші сервери. Це і є деплой (викладання). Така сама задача, як build і test, тільки запускається на main після мерджу.Alex Tutor
Fix checkout button after cart edits#134
Змерджено в main о 9:40 як d51c7e8
deploy (production)
Запускався на d51c7e8 у main, завершився о 9:44
Deployments («деплої»). Натисни production, і побачиш, який коміт зараз на сайті й відколи.Ви
Daniel
main, а на сайті її немає. Ми отримуємо сповіщення і або одразу виправляємо, або робимо revert. Зламана main блокує наступний деплой для всіх, тому це завжди першочергове.Ви
production у Deployments.Alex Tutor
Alex Tutor
Питання 2
У Котокормі тієї ж миті, коли #134 показує Merged, кожен клієнт уже бачить виправлення на сайті.
Ви
Alex Tutor
feature/loyalty-points? Дванадцять комітів попереду, 86 позаду, п'ять місяців без змін. Ось на що зазвичай перетворюється «змерджимо один раз, наприкінці».Daniel
main іде вперед без неї. Що більше відставання, то більше шансів на конфлікти або на сюрприз, як із моєю кнопкою в березні.Alex Tutor
Daniel
Revert прибирає саме її. Відкотиш величезну, і разом із поганою зміною підуть десять добрих.Ви
Alex Tutor
Alex Tutor
Питання 3
Чому в Котокормі воліють малі pull requests у короткоживучих гілках? Познач усе, що підходить.
Ви
Alex Tutor
main. Стара й далеко позаду: ось тривожний знак.Daniel
Files changed показує 60 файлів для «невеликої правки», спитай чому. Питання на початку обходиться дешевше, ніж болісне рев'ю наприкінці.Alex Tutor
main поруч збирала коміти.Alex Tutor
Питання 4
Для обох гілок ось-ось відкриють pull request. Яке твердження найкраще відповідає GitHub flow?
a1w1a2w2a3w3a4w4a5w5feature/wishlista6mainx1fix/footer-links
Граф комітів, від найстарішого: Дві гілки, що чекають на мердж 1. коміт a1 у main 2. гілка feature/wishlist починається від коміту a1 3. коміт w1 у feature/wishlist 4. коміт a2 у main 5. коміт w2 у feature/wishlist 6. коміт a3 у main 7. коміт w3 у feature/wishlist 8. коміт a4 у main 9. коміт w4 у feature/wishlist 10. коміт a5 у main 11. коміт w5 у feature/wishlist 12. коміт a6 у main 13. гілка fix/footer-links починається від коміту a6 14. коміт x1 у fix/footer-links
Ви
Alex Tutor
Daniel
main і викладений, але банер видно лише тоді, коли флаг увімкнено.Alex Tutor
Daniel
autumn-sale-banner, за замовчуванням вимкнений. Emma позначила #136 як готовий до рев'ю, я схвалив, і годину тому вона його змерджила.Alex Tutor
Питання 5
У суботу клієнт відкриває головну сторінку Котокорму. Що він бачить?
Add autumn sale banner#136
Змерджено в п'ятницю · флаг autumn-sale-banner: вимкнено
deploy (production)
Завершився в п'ятницю
Ви
Alex Tutor
Daniel
main і далі готова до викладання, поки фіча росте малими pull requests.Alex Tutor
Ви
Alex Tutor
Daniel
Alex Tutor
Alex Tutor
Питання 6Коротка відповідь · Завдання з перевіркою ШІ
Колега з маркетингу пише: «#136 змерджено, тож банер розпродажу вже на сайті? Можна сьогодні ввечері відправити розсилку?» Розпродаж стартує в понеділок; флаг autumn-sale-banner вимкнено, Emma вмикає його в понеділок о 8:00. Напиши відповідь у 2–3 реченнях.
Напишіть відповідь і отримайте оцінку та відгук від нашого ШІ-рецензента.
Увійдіть, щоб отримати відгук ШІВи
Daniel
main малими pull requests, і все за одним флагом: loyalty-points.Alex Tutor
Daniel
Ви
Alex Tutor
Питання 7Кейс · Завдання з перевіркою ШІ
Склади план нарізки балів лояльності для GitHub flow.
Бали лояльності: клієнти отримують 1 бал за кожні 10 грн оплаченого замовлення, бачать баланс в особистому кабінеті й можуть витратити бали як знижку під час оформлення. Emma пише сторінку з поясненням програми. Стара гілка feature/loyalty-points покинута. CEO хоче, щоб програму «запустили до Black Friday», а це приблизно за шість тижнів.
Daniel перебудує фічу на свіжій main за флагом loyalty-points. Котокорм викладає кожен мердж у main за кілька хвилин, а флаг можна ввімкнути лише для працівників або для всіх.
Склади план із 4–6 pull requests: що містить кожен і в якому порядку, що бачать клієнти після кожного мерджу, як команда тестує до запуску, що означає «запущено» і як відкотитися, і за чим ти стежитимеш, щоб звітувати про прогрес.
Напишіть відповідь і отримайте оцінку та відгук від нашого ШІ-рецензента.
Увійдіть, щоб отримати відгук ШІAlex Tutor
loyalty. Відфільтруй за нею pull requests, і прогрес фічі видно сам собою.Alex Tutor
Add loyalty points behind a flag#155
автор Daniel · змерджено у вівторок · флаг loyalty-points: вимкнено
Earn points on paid orders#156
автор Daniel · Review required · перевірки пройдено
Write loyalty programme page#157
авторка Emma · Draft
Ви
main і на сайті, але прихований. Один чекає на рев'юера. Сторінка Emma поки чернетка.Daniel
Alex Tutor
Ви
Alex Tutor
Питання 8
Зістав кожну ознаку, яку видно про бали лояльності, з тим, що вона означає.
Торкніться відповіді, а потім рядка, до якого вона належить. Можна й перетягувати.
- #155
Merged, флагloyalty-pointsвимкнено - #156 відкритий, «Review required», перевірки пройдено
- #157
Draft - Флаг
loyalty-pointsувімкнено для всіх
Відповіді, які ще треба розмістити
main завжди готова до викладання, малі гілки, pull request для всього, деплой після мерджу і флаги для всього, що ще не готове для клієнтів.Ви
Daniel
Alex Tutor
На цьому все. Ви відповіли на всі завдання — чудова робота.