Тур по Git
Работа с удалёнными репозиториями / Урок 4.10

Лучшие практики Pull Request

Pull request (PR) — это не просто способ слить код, это инструмент коммуникации. Хорошо оформленный PR упрощает ревью, помогает раньше находить ошибки и поддерживает чистую историю проекта.

Анатомия хорошего PR

Заголовок

Делайте его коротким и описательным. Используйте повелительное наклонение, как в сообщении коммита:

  • Хорошо: "Add email validation to signup form"
  • Хорошо: "Fix crash when user has no profile photo"
  • Плохо: "Updates" или "Fixed stuff" или "WIP"

Описание

Хорошее описание PR отвечает на три вопроса:

  1. Что делает это изменение?
  2. Зачем оно нужно?
  3. Как ревьюер может его проверить?
## Что
Добавлена серверная валидация email-адресов на эндпоинте регистрации.

## Зачем
Пользователи могли отправлять невалидные email, что вызывало ошибки
в сервисе уведомлений.

## Как проверить
1. Отправьте POST на /api/signup с невалидным email
2. Убедитесь, что получаете ответ 422 с сообщением о валидации
3. Отправьте POST с валидным email и подтвердите успешную регистрацию

Размер

Меньшие PR — лучшие PR:

  • Маленький (до 200 строк) — Легко проверить, быстрая обратная связь
  • Средний (200-500 строк) — Приемлемо для фич
  • Большой (500+ строк) — Сложно проверить тщательно, подумайте о разделении

Процесс Code Review

Как автор

  • Сначала проверьте сами — Просмотрите свой собственный diff перед запросом ревью
  • Добавляйте контекст — Оставляйте комментарии к сложным местам, объясняя логику
  • Реагируйте на обратную связь — Отвечайте на каждый комментарий, даже если просто подтверждаете его
  • Держите коммиты чистыми — Каждый коммит должен быть логической единицей изменений

Как ревьюер

  • Будьте конструктивны — Предлагайте улучшения, а не просто критикуйте
  • Задавайте вопросы — Если что-то непонятно, спросите, а не предполагайте
  • Одобряйте, когда готово — Не блокируйте из-за мелочей; отметьте их, но одобрите, если основное изменение корректно
  • Смотрите на общую картину — Имеет ли смысл подход? Есть ли более простой способ?

CI-проверки

Большинство проектов запускают автоматические проверки для каждого PR:

  • Тесты — Проходит ли существующий набор тестов?
  • Линтинг — Соответствует ли код стилевым рекомендациям проекта?
  • Сборка — Успешно ли компилируется/собирается проект?
  • Покрытие — Покрыт ли новый код тестами?

Зелёный статус CI означает, что автоматические проверки пройдены. Всегда дождитесь CI перед слиянием.

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

Когда PR одобрен, есть несколько способов выполнить слияние:

Merge Commit

git merge --no-ff feature

Создаёт коммит слияния, который сохраняет полную историю ветки. Удобно для отслеживания, когда фичи были интегрированы.

main: A --- B --- M
               \ /
feature:  C --- D

Squash and Merge

Объединяет все коммиты PR в один коммит в целевой ветке. Удобно для поддержания чистой истории main, когда коммиты PR беспорядочны.

main: A --- B --- S  (S содержит все изменения из C и D)

Rebase and Merge

Воспроизводит каждый коммит PR поверх целевой ветки. Удобно для линейной истории с сохранением отдельных коммитов.

main: A --- B --- C' --- D'

Итоговый рабочий процесс PR

  1. Создайте ветку от последнего main
  2. Делайте небольшие, целенаправленные коммиты с понятными сообщениями
  3. Отправьте ветку и откройте PR
  4. Напишите понятное описание, объясняющее что, зачем и как проверить
  5. Дождитесь прохождения CI
  6. Оперативно реагируйте на замечания ревью
  7. Выполните слияние с использованием предпочтительной стратегии команды
  8. Удалите ветку после слияния, чтобы поддерживать порядок

Распространённые ошибки

  • Гигантские PR — Разбивайте большие изменения на меньшие, обозримые части
  • Без описания — Всегда объясняйте, что делает ваш PR и зачем
  • Игнорирование ошибок CI — Исправьте их перед запросом ревью
  • Долгоживущие ветки — Регулярно сливайте или перебазируйте, чтобы избежать болезненных конфликтов
  • Слияние без ревью — Даже маленькие изменения выигрывают от второй пары глаз