Коротка відповідь
juniorGit hygiene — це сукупність практик, що забезпечують чистоту історії та зручність колективної роботи. Основні підходи: використання окремих feature‑branch, чітких commit‑messages, rebase перед merge, squash‑commit для однієї задачі та регулярне очищення stale branches.
Повне пояснення
Що це і навіщо
Git hygiene — система правил, що допомагає підтримувати зрозумілу та передбачувану історію репозиторію. Це важливо для колективної розробки, коли кілька розробників працюють над однією базою коду.
Ключові принципи
- Feature‑branch: кожна нова функція або баг‑фікс розробляється в окремому гілці.
- Commit‑messages: короткий заголовок (≤50 символів) + розширений опис, що пояснює «що» і «чому».
- Rebase: перед
mergeвиконуємоgit rebase origin/main, щоб уникнути «множинних» merge‑commit. - Squash: при завершенні задачі об’єднуємо всі коміти в один, щоб історія залишалася лінійною.
- Pull‑request review: код перевіряється колегами, що знижує кількість помилок.
- Tagging: релізи позначаються тегами, що полегшує повернення до стабільної версії.
- Branch cleanup: видаляємо локальні та віддалені гілки, що вже змерджено.
Як це працює
При git rebase коміти з feature‑branch «переходять» поверх останнього commit‑у main, що створює лінійну історію. Squash‑commit зменшує кількість commit‑ів, що полегшує читання.
Практика й реалізація
# Створюємо гілку
git checkout -b feature/add-login
# Робимо коміти
git commit -m "Add login route"
# Після завершення
git rebase main
git push -u origin feature/add-login
# Після review
git checkout main
git merge --squash feature/add-login
git commit -m "Add login route"
Тестування
Під час PR можна запускати CI‑тести (Jest, Cypress). Якщо тест не проходить, коміт з помилкою видаляється за допомогою git reset --soft HEAD~1.
Оптимізація
- Fast‑forward merge:
git merge --ff-onlyдля уникнення зайвих commit‑ів. - Git hooks:
pre-commitдля перевірки форматування коду.
Безпека
Використовуємо git config --global user.email та user.name, щоб уникнути конфліктів авторства.
Особливості в контексті колективної роботи
- Protected branches:
main/masterзахищені від прямого пушу. - Code owners: визначаються відповідальні особи за певні директорії.
Часті помилки
- Merge без rebase → дубльовані коміти.
- Великий commit без опису → важко зрозуміти зміни.
- Не видаляти stale branches → збільшує clutter.
- Неправильний порядок rebase → конфлікти.
- Відсутність review → баги в коді.
- Неправильне використання tags → труднощі з релізами.
- Пуш без fetch → конфлікти при push.
- Використання
git merge --no-ffбез потреби → непотрібна історія.
Cheatsheet
git checkout -b <branch>– створити та перейти.git rebase main– оновити гілку.git merge --squash <branch>– об’єднати коміти.git push -u origin <branch>– відправити гілку.git branch -d <branch>– видалити локальну гілку.git push origin --delete <branch>– видалити віддалену гілку.