Feature Branch — це техніка гілкування в Git, за якої кожна нова функція розробляється в окремій гілці, ізольованій від основного коду. Це дозволяє кільком розробникам одночасно працювати над різними завданнями без ризику пошкодити стабільну версію проєкту. За даними Atlassian, 2024, Feature Branch є ключовим елементом Git Flow і використовується в більшості комерційних проєктів.
Головне
feature/назва-функції у стандартному Git Flow.Feature Branch (гілка функції) — це тимчасова гілка в Git, створена від develop для розробки окремої функціональності. На відміну від довгоживучих гілок main і develop, feature гілки існують обмежений час — від кількох годин до кількох тижнів.
Основна мета feature branch — ізолювати зміни, пов'язані з одним завданням, від решти коду. Розробник може експериментувати, робити безліч комітів і навіть ламати код у своїй гілці, не впливаючи на роботу інших учасників команди.
Після завершення розробки feature branch зливається назад у develop через Pull Request з обов'язковим код-рев'ю. Після злиття гілка зазвичай видаляється, щоб репозиторій залишався чистим.
За даними Vincent Driessen, 2010, модель Git Flow із feature гілками стала стандартом індустрії завдяки чіткому розподілу відповідальності між різними типами гілок.
Робочий процес із feature branch складається з послідовності кроків, які розробник виконує для кожної нової функції. Цей процес мінімізує конфлікти злиття та забезпечує контроль якості коду.
Періодична синхронізація з develop критично важлива. Чим довше живе feature гілка без злиття змін із develop, тим вища ймовірність конфліктів при фінальному злитті.
| Частота синхронізації | Ризик конфліктів | Зручність розробки |
|---|---|---|
| Щодня | Низький | Вимагає частого rebase або merge |
| Щотижня | Середній | Комфортний режим, помірні конфлікти |
| Щомісяця | Високий | Ризик складного вирішення конфліктів |
| Ніколи | Критичний | Злиття може бути неможливим без втрати даних |
Іменування гілок — важлива частина командної дисципліни. Єдиний стандарт назв дозволяє швидко визначити, над яким завданням ведеться робота та хто її виконує.
feature/added-auth-module.feature/PROJ-42-add-login.feature/feat/analytics-dashboard.Використання ID завдання з JIRA, Trello або іншої системи — найкраща практика. Вона автоматично пов'язує код із завданням і спрощує пошук гілок через git log.
Pull Request (або Merge Request у GitLab) — це запит на злиття feature гілки в develop. PR — не просто технічна операція, а процес командного код-рев'ю, який підвищує якість коду та поширює знання всередині команди.
Хороший PR містить заголовок із коротким описом завдання, посилання на тікет і опис змін. Розробник має вказати, що саме було зроблено, які файли змінено та чи є потенційні ризики для інших частин проєкту.
Команда переглядає код у PR, залишає коментарі, запитує зміни (change requests) і затверджує злиття (approve). Після затвердження PR виконується merge або squash merge.
Середній час перевірки PR у мобільній розробці — від 4 до 24 годин. Бібліотека Danger автоматизує частину перевірок, запускаючи лінтери та тести безпосередньо в PR.
Після затвердження PR feature гілка може бути злита в develop різними способами. Вибір стратегії злиття впливає на історію комітів і можливість відкату змін.
Для мобільних проєктів із частими релізами найчастіше використовують squash merge: він дає чисту історію в develop, а деталі розробки залишаються в описі PR і в завданні трекера.
Навіть досвідчені розробники припускаються помилок під час роботи з feature гілками. Знання типових проблем допомагає уникнути втрати часу та даних.
Найкращий спосіб уникнути цих проблем — домовитися про правила роботи на старті проєкту та використовувати автоматичні перевірки в CI/CD пайплайні.
Розглянемо практичний сценарій: розробник починає нову функцію авторизації в мобільному додатку. Він створює feature гілку, працює над кодом і завершує завдання Pull Request.
# Оновлення develop і створення feature гілки
git checkout develop
git pull origin develop
git checkout -b feature/add-login-screen
# Робота над функцією: коміти
git add src/ui/login/
git commit -m "Add login screen layout"
# Відправка feature гілки на сервер
git push origin feature/add-login-screen
# Синхронізація з develop (rebase)
git fetch origin develop
git rebase origin/develop
# Після затвердження PR: оновлення локального develop і видалення гілки
git checkout develop
git pull origin develop
git branch -d feature/add-login-screen
Команда git branch -d видаляє гілку тільки після того, як її зміни повністю злиті. Якщо гілка не злита, Git запропонує використати git branch -D для примусового видалення — використовуйте цей прапорець з обережністю.
CI/CD пайплайн має запускатися для кожної feature гілки перед створенням PR. Це дозволяє виявити проблеми на ранній стадії, до того як код потрапить на рев'ю іншим розробникам.
# GitHub Actions для перевірки feature гілки
name: Feature Branch CI
on:
push:
branches:
- 'feature/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: ./gradlew test
- name: Lint check
run: ./gradlew lint
Пайплайн перевіряє, що код компілюється, тести проходять і стиль коду відповідає прийнятим у команді стандартам. Тільки після проходження всіх перевірок можна створювати Pull Request.
Поширені запитання
Так, це стандартна практика. Кожен розробник може працювати у своїй feature гілці, і всі вони синхронізуються з develop незалежно. Головне правило — одна гілка на одне завдання, щоб уникнути міжзавдальних залежностей у коді.
Виконайте git rebase origin/develop на вашій feature гілці. Якщо виникли конфлікти — вирішіть їх по одному, коміти будуть переписані поверх останнього стану develop. Після rebase знадобиться git push --force для оновлення віддаленої гілки.
Якщо завдання скасовано, feature гілку можна просто видалити. Скористайтеся git branch -d feature/name для локальної гілки та git push origin --delete feature/name для віддаленої. Усі незакомічені зміни буде втрачено.
По суті це одне й те саме. У різних командах використовують різні префікси: feature/, task/, feat/. Різниці в механіці Git немає — усі вони є тимчасовими гілками, створеними від develop для ізольованої розробки.
Так, це обов'язкова практика. Гілки після злиття засмічують список посилань і можуть викликати плутанину. Більшість платформ (GitHub, GitLab) пропонують видалити гілку одразу після мержа PR, а локальні гілки видаляються командою git branch -d.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також