Короткий ответ
Pull request — это механизм, с помощью которого разработчик предлагает влить изменения из своей ветки или форка в основную ветку репозитория; изменения проходят обсуждение и код-ревью перед слиянием. В GitLab аналогичный механизм называют merge request. Вокруг PR строится совместная разработка в команде.
Как это работает подробнее
PR — точка входа изменений в общий код: до слияния другие разработчики просматривают и обсуждают код, после чего изменения попадают в основную ветку.
- Форк. Удалённая серверная копия оригинального репозитория под своим аккаунтом; между форком и оригиналом сохраняется связь, позволяющая вносить вклад обратно.
- Типовой сценарий. Репозиторий клонируется локально, создаётся feature-ветка, вносятся изменения, ветка пушится, после чего открывается pull request.
- Ревью и слияние. Другие разработчики просматривают изменения и обсуждают их, затем PR вливается в основную ветку
main. - Workflow. Git Flow использует ветки для фич, релизов и хотфиксов, GitHub Flow прост: ветка, PR, ревью, merge в main, GitLab Flow привязывается к CI/CD, Trunk-Based Development — разработка в одной основной ветке.
- Практики команд. Соглашения об именовании веток, частые коммиты с осмысленными сообщениями, rebase перед merge и тегирование релизов.
Пример кода
Шаги перед открытием pull request
git checkout -b feature/login
git add .
git commit -m 'Добавить форму входа'
git push origin feature/login
# после пуша ветки в интерфейсе GitHub открывается pull requestЧто использовать на практике
- Маленькие PR. Дроби изменения на небольшие проверяемые пулл-реквесты.
- Чистая история. Делай rebase перед merge, чтобы история оставалась линейной.
- Соглашения. Договаривайся в команде об именовании веток и тегировании релизов.
- Код-ревью. Используй PR как место обсуждения кода, а не просто способ слить изменения.
Подводные камни
- Гигантские PR. Слишком большие изменения тяжело ревьюить, и ошибки легко пропустить.
- Устаревшая ветка. Feature-ветка, давно отставшая от
main, часто даёт конфликты при слиянии. - Ревью без обсуждения. PR, который вливают без проверки и комментариев, теряет смысл.
Как отвечать на собеседовании
- Определи pull request как предложение изменений с обсуждением и код-ревью → опиши сценарий с форком и feature-веткой → перечисли модели workflow: Git Flow, GitHub Flow, GitLab Flow, Trunk-Based Development → назови лучшие практики больших команд.