Удалённые репозитории
1Удалённые репозитории: remote и fetch2push и pull: синхронизация с remote3clone и fork: работа с чужими репозиториями4Tracking branches: origin, upstream, fetch5Pull Request: код-ревью и совместная работа← вы здесь
📖 Полная статья по теме →
Урок 5~12 минут

Pull Request: код-ревью и совместная работа

Pull Request (PR) или Merge Request (MR) — стандартный способ командной работы с Git. Разберём весь процесс.

Что такое PR

Pull Request — это предложение влить изменения из одной ветки в другую, оформленное как обсуждение:

  1. Ты создаёшь ветку и делаешь коммиты
  2. Открываешь PR на GitHub/GitLab
  3. Коллеги смотрят код, оставляют комментарии
  4. Ты вносишь правки
  5. PR одобряется и мержится в main

Жизненный цикл PR

feature/auth ──────────────────────────────→ merged
     │           │             │
  git push   open PR        更新 push
             + описание   (по ревью)

Создание хорошего PR

Маленький PR лучше большого:

  • До 400 строк изменений — легко ревьювить
  • Один PR = одна задача
  • Большой PR = долгое ревью = задержки

Хорошее описание:

markdown
## Что сделано
- Добавлена авторизация через JWT
- Middleware для проверки токена
 
## Зачем
Закрывает задачу AUTH-42: нужна защита API
 
## Как тестировать
1. POST /login с валидными данными → получить токен
2. GET /profile с токеном → профиль пользователя
3. GET /profile без токена → 401

Код-ревью

Ревьювер смотрит:

  • Корректность — работает ли код как задумано
  • Читаемость — понятен ли код
  • Тесты — покрыты ли кейсы
  • Безопасность — нет ли уязвимостей
  • Производительность — нет ли очевидных проблем

Как отвечать на ревью:

  • Не воспринимай комментарии лично — это про код, не про тебя
  • Каждый комментарий → коммит с исправлением → git push
  • PR обновится автоматически
  • Отметь комментарий как resolved

CI/CD в PR

Хорошая команда запускает автоматические проверки:

PR открыт → CI запускается:
  ✓ Тесты проходят
  ✓ Линтер не ругается  
  ✓ Сборка успешна
  ✓ Code coverage не упал

Без зелёного CI — merge заблокирован.

Draft PR

Работа ещё не закончена, но хочешь ранний фидбэк:

[Draft] feat: авторизация

Draft PR не мержат — это сигнал что работа в процессе. Когда готово — конвертируй в обычный PR.

Процесс с fork

Для open-source проектов:

bash
# 1. Fork на GitHub (кнопкой)
# 2. Clone своего форка
git clone https://github.com/ты/repo.git
 
# 3. Добавить upstream
git remote add upstream https://github.com/оригинал/repo.git
 
# 4. Создать ветку
git switch -c fix/typo
 
# 5. Сделать изменения и push в свой форк
git push origin fix/typo
 
# 6. Открыть PR из своего форка в оригинальный репозиторий

Полезные практики

  • Один коммит на правку — не пуши 10 отдельных "fix"
  • Squash перед merge — чистая история в main
  • Закрывай issues — в описании PR напиши Closes #42
  • Проси конкретных ревьюверов — не просто @all
Pull Request — это не просто запрос на слияние. Это место для обсуждения, ревью и документирования решений. Описание PR так же важно как код.
Для непрерывной доставки и веба
main
feature/login
feature/profile
fix/crash
время →
ПЛЮСЫ
Простота
Быстрая доставка
Хорошо для CI/CD
МИНУСЫ
main всегда должна работать
Нет изоляции релизов
КОГДА
Веб-сервисы, SaaS, небольшие команды
УГЛУБЛЁННОЕ ЧТЕНИЕ
Полная статья: Удалённые репозитории
Теория, примеры и разбор темы в одном месте