Статьи

Небольшой курс по Git — от первых команд до командной работы и выката в прод

Командная работа и практики

Страница 6 из 8 · 2026-10-25 · 4 мин чтения

Стратегии ветвления

GitHub Flow

Самая простая и популярная схема:

  1. main всегда рабочий и готов к выкату.
  2. Для каждой задачи создается короткая ветка от main.
  3. Открывается Pull Request, проходит ревью и проверки.
  4. После слияния в main код выкатывается.
main:    A---B-------M---N              \     /feature:       C---D

Подходит большинству команд и веб-проектов с постоянной поставкой.

Trunk-based development

Все работают почти напрямую в main, ветки живут не дольше одного-двух дней. Незаконченные функции прячут за флагами возможностей (feature flags). Требует хорошей автоматизации и тестов. Используется в крупных командах с частыми релизами.

Git Flow

Много долгоживущих веток:

main        — только релизы, помечены тегамиdevelop     — общая интеграцияfeature/*   — задачи, от developrelease/*   — подготовка релизаhotfix/*    — срочные исправления, от main

Подходит для продуктов с версионными релизами (мобильные приложения, библиотеки, десктоп). Для веб-сервисов обычно избыточен.

Что выбрать

СитуацияСхема
Веб-сервис, частые деплоиGitHub Flow или trunk-based
Несколько поддерживаемых версийGit Flow или релизные ветки
Маленькая команда, учебный проектGitHub Flow

Pull Request

Pull Request (PR, в GitLab — Merge Request) — запрос на слияние ветки с обсуждением и проверками.

Порядок:

git switch -c feature/searchgit add .git commit -m "Add search endpoint"git push -u origin feature/search

Затем откройте PR на GitHub. Если установлен GitHub CLI:

gh pr create --fillgh pr checkout 42gh pr merge 42 --squash

Хороший Pull Request

  • небольшой: до 200–400 строк, одна задача;
  • с описанием: что сделано, зачем, как проверить, ссылка на задачу;
  • с зелеными проверками: тесты и линтеры проходят;
  • самопроверен: вы сами просмотрели diff до запроса ревью;
  • в draft режиме, пока не готов.

Шаблон описания:

## Что сделаноДобавлен поиск по каталогу.## ЗачемЗадача PROJ-123: пользователи не могут найти товары.## Как проверить1. Открыть /catalog2. Ввести слово в поле поиска## Скриншоты и заметки

Способы слияния PR

СпособРезультатКогда
Merge commitсохраняет все коммиты и добавляет mergeнужна полная история
Squash and mergeвсе коммиты ветки в одинчистая история, много мелких коммитов
Rebase and mergeлинейная история, коммиты сохраняютсяаккуратные коммиты в ветке

Для большинства команд удобен Squash and merge: один PR — один коммит в main.

Code review

Для автора:

  • отвечайте на комментарии спокойно, правьте или объясняйте;
  • не переписывайте историю во время ревью без нужды, так тяжелее смотреть изменения.

Для ревьюера:

  • проверяйте логику, граничные случаи, безопасность, тесты, читаемость;
  • критикуйте код, а не человека;
  • разделяйте блокирующие замечания и пожелания («nit:»);
  • отвечайте быстро: долгие ревью тормозят команду.

Сообщения коммитов: Conventional Commits

Единый формат помогает читать историю и автоматически генерировать changelog и версии:

тип(область): описаниетелоподвал

Типы:

ТипНазначение
featновая функциональность
fixисправление ошибки
docsдокументация
refactorизменение кода без смены поведения
testтесты
choreслужебные изменения, зависимости
perfулучшение производительности
ciнастройки CI

Примеры:

feat(auth): add login via emailfix(cart): prevent negative quantitydocs: update install instructionsfeat(api)!: remove deprecated v1 endpoints

Знак ! или подвал BREAKING CHANGE: означают несовместимое изменение.

Правила репозитория

Настройте в GitHub: Settings → Branches → Branch protection rules (или Rulesets) для main:

  • запрет прямого push, только через Pull Request;
  • минимум одно одобрение ревью;
  • обязательные проверки CI перед слиянием;
  • запрет force push и удаления ветки;
  • требование актуальной ветки перед слиянием;
  • опционально: подписанные коммиты, линейная история.

CODEOWNERS

Файл .github/CODEOWNERS назначает ответственных за части кода. Они автоматически добавляются в ревьюеры:

*                @team-lead/backend/        @backend-team/frontend/       @frontend-team/.github/        @devops

Что хранить в репозитории

Должно быть:

  • исходный код и тесты;
  • README.md: что это, как запустить, как внести вклад;
  • .gitignore;
  • LICENSE для открытых проектов;
  • конфигурация CI/CD;
  • .env.example без реальных значений;
  • CONTRIBUTING.md с правилами команды.

Не должно быть:

  • секретов: паролей, токенов, ключей, .env;
  • зависимостей (node_modules, target) и сборки;
  • больших бинарных файлов, для них используют Git LFS;
  • личных настроек IDE.

Ежедневные привычки

  • Начинайте день с git pull --rebase.
  • Коммитьте часто и небольшими порциями.
  • Перед коммитом смотрите git status и git diff --staged.
  • Не работайте долго в ветке без синхронизации с main.
  • Не коммитьте код, который не компилируется или ломает тесты.
  • Удаляйте слитые ветки.
  • Перед силовыми операциями (reset --hard, push --force) остановитесь и подумайте.