Пошук уроків, статей та іншого контенту
Як розробляти нову функціональність, не заважаючи стабільній версії коду — git branch і git switch.
Без гілок уся історія проєкту — одна пряма лінія комітів: щоб почати експериментальну зміну, довелось би або ризикувати ламати стабільний код прямо в основній історії, або вручну копіювати весь проєкт в окрему папку. Гілка (branch) — незалежна лінія розробки, що відгалужується від певної точки історії, дозволяючи працювати над новою функціональністю ізольовано від стабільного коду.
Технічно гілка в Git — не копія файлів, а легкий вказівник (просто збережений хеш коміту), що рухається вперед з кожним новим комітом на цій гілці. Це робить створення нової гілки в Git практично миттєвою й дешевою операцією, на відміну від деяких старіших систем контролю версій, де гілка означала фізичне копіювання файлів.
git branch feature/login-form # створити нову гілку від поточного коміту
git switch feature/login-form # перейти на цю гілку
# або одразу створити й перейти одним рядком:
git switch -c feature/login-formЗа конвенцією гілку, що містить стабільний, готовий до розгортання код, називають main (історично — master, у старіших проєктах). Нову функціональність розробляють в окремих feature-гілках, відгалужених від main, і зливають назад (наступний урок), лише коли робота готова.
git switch (сучасна команда; git checkout <branch> — старіший, універсальніший, але менш явний варіант тієї самої дії) змінює вміст робочої директорії на стан обраної гілки — незакомічені зміни поточної гілки заважають перемкнутись, доки їх не закомітити чи не відкласти (git stash, окремий урок далі).
git branch # список локальних гілок, поточна позначена *
git branch -a # список усіх гілок, включно з віддаленими
git branch -d old-feature # видалити гілку, роботу з якої вже завершено й злитоПрактичне правило: одна гілка — одна логічно завершена задача (одна функціональність, один баг-фікс). Дрібніші, сфокусовані гілки простіше рев'ювити, зливати й, за потреби, відкинути, ніж одну величезну гілку з тижнями незв'язаних змін.
Розробляти всю нову функціональність прямо в main — втрачає ізоляцію, яку дають гілки, і ризикує зламати стабільний код у процесі роботи.
Тримати одну гілку відкритою тижнями з великою кількістю незв'язаних змін — ускладнює рев'ю й підвищує ризик конфліктів злиття (наступні уроки).
Забувати, на якій гілці зараз перебуваєш, і комітити зміни не туди — звичка перевіряти git status (показує поточну гілку) перед комітом запобігає цьому.
Гілка — легкий, дешевий у створенні вказівник на лінію розробки, що відгалужується від певного коміту, дозволяючи ізольовано працювати над новою функціональністю без ризику для стабільного коду в main. git switch -c створює й одразу переходить на нову гілку; практика — невеликі, сфокусовані на одній задачі гілки, а не довгоживучі гілки з тижнями накопичених незв'язаних змін.