📝 Git и GitHub

Pull Requests: полное руководство 🔀

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
06.05.2026
⏱️
Время чтения
4 мин
👁️
Просмотров
57
🌱
Уровень
Начальный
🐦 💼 ✈️

Pull Request (PR) — это официальная просьба влить изменения из одной ветки в другую. Главный инструмент командной разработки.

Что такое Pull Request простыми словами

Представьте: вы работаете над новой функцией в отдельной ветке. Закончили. Теперь хотите чтобы изменения попали в основную ветку (main). Просто так взять и смёрджить — нехорошо, никто не проверил вашу работу.

Pull Request — это:
1. Показать команде что вы сделали
2. Попросить проверить перед мёрджем
3. Получить обратную связь и обсудить решения
4. Зафиксировать историю принятых решений

Ваша ветка:  feature/login ──●──●──●──●
                                        ↓ Pull Request
Основная:    main ──────────────────────●  ← merge

PR vs прямой коммит в main

Прямой коммит в main Через Pull Request
Ревью Никто не смотрел Команда проверила
Ошибки Попадают в main Ловятся до merge
История Непонятно зачем Описание и обсуждение
Откат Сложнее Проще (revert PR)

В большинстве профессиональных команд прямые коммиты в main запрещены.

Как создать Pull Request

Шаг 1: Запушьте ветку

git push origin feature/my-feature

В GitHub Desktop: кнопка Push origin (или Publish branch при первом push).

Шаг 2: Откройте GitHub

После push GitHub покажет жёлтый баннер:

«feature/my-feature had recent pushes — Compare & pull request»

Нажмите на него или идите в Pull requests → New pull request.

Шаг 3: Выберите ветки

Убедитесь что направление правильное:

base: main  ←  compare: feature/my-feature
  ↑ куда                    ↑ откуда

Шаг 4: Заполните PR

  • Заголовок — кратко и конкретно
  • Описание — подробно (см. шаблон ниже)

Шаг 5: Создайте PR

Нажмите Create pull request.

Как писать хорошее описание PR

Плохое описание ❌

fix bug
update

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

## Что сделано
Добавлена проверка поля `description` при создании задачи.
Теперь вместо 500 ошибки API возвращает корректный ответ.

## Зачем
Баг из тикета #47: задача без description вызывала краш сервиса.

## Как проверить
1. Открыть POST /api/tasks
2. Отправить запрос без поля description
3. Убедиться что ответ 200 с description: "Нет описания"

## Заметки
Временно использую дефолтное значение. Позже можно сделать
description nullable на уровне базы данных.

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

## Что сделано
[1-3 предложения о сути изменений]

## Зачем
[Контекст: проблема или задача]

## Как проверить
1. [Конкретный шаг]
2. [Конкретный шаг]

## Скриншоты / Демо
[Если есть визуальные изменения]

Анатомия страницы PR

Вкладка Conversation

Основная лента обсуждения. Комментарии ревьюеров, история событий (push, review, assign).

Вкладка Commits

Все коммиты которые войдут в merge. Каждый коммит — ссылка на diff.

Вкладка Files Changed ⭐

Главное место для ревью! Построчный diff всех изменённых файлов.
Можно добавлять inline комментарии к конкретным строкам.

Как обновить PR

После создания PR не нужно создавать новый если нужно что-то изменить.

Просто сделайте новый коммит в ту же ветку и запушьте — PR обновится автоматически:

PR #12: feat: добавить форму входа

Commits:
● feat: создана форма логина          ← первый push
● fix: исправлена валидация по замечанию ревью  ← после ревью
● docs: добавлены комментарии по просьбе     ← ещё правки

Статусы PR

Статус Значок Значение
Open 🟢 Открыт, ждёт ревью
Draft В процессе, ревью не нужно
Merged 🟣 Смёрджен в base ветку
Closed 🔴 Закрыт без merge

Три стратегии merge

Merge commit (по умолчанию)

main: ──●──────────────────────●── 
                                ↑
feature:    ──●──●──●──────────/ (merge commit)

История полная, видны все коммиты feature-ветки. Рекомендуется для учёбы.

Squash and merge

main: ──●──────────────────────●── 
                                ↑
                          Один коммит со всем

Все коммиты feature-ветки «сжимаются» в один. Чистая история, но теряется детализация.

Rebase and merge

main: ──●──●──●──●──────────── 
              ↑↑↑
        Коммиты из feature «пересажены» на main

Линейная история без merge commit. Опыт для продвинутых.

После merge: удалите ветку

GitHub сразу предложит Delete branch. Соглашайтесь — ветка выполнила задачу.

Чтобы удалить локально:

git branch -d feature/my-feature

В GitHub Desktop переключитесь на main, потом Branch → Delete.

PR для разных сценариев

Обычный PR в команде

Вы member репозитория → push ветки → PR → ревью → merge.

PR из форка (Open Source)

Вы не member → fork → clone fork → push в форк → PR из форка в оригинал.

Подробнее в статье GitHub Fork: вносим вклад в чужой проект.

Полезные возможности PR

Draft PR — создайте PR заранее с пометкой «в процессе». Коллеги видят над чем работаете, могут дать ранний фидбек. Когда готово — нажмите «Ready for review».

Reviewers — назначьте конкретных людей для ревью. Они получат уведомление.

Assignees — кто ответственен за PR (обычно автор).

Labels — теги: bug, feature, documentation, help wanted.

Linked Issues — напишите в описании Closes #42 и PR автоматически закроет Issue при merge.

Почему PR важны для карьеры

Умение создавать хорошие PR — один из ключевых профессиональных навыков.

Работодатели смотрят на:
- Описания ваших PR в open source проектах
- Как вы реагируете на ревью
- Чистоту истории коммитов

Хороший PR показывает что вы думаете не только о коде, но и о команде.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Платформы хостинга Git: полное сравнение 🏆

GitHub, GitLab, Bitbucket — какую выбрать? Полное сравнение с актуальными данными.

📅 06.05.2026 👁️ 52
📝

Что такое Git Commit и зачем он нужен? 📸

Коммит — это сохранённый снимок вашего проекта в определённый момент времени, как сохранение в видеоигре!

📅 06.05.2026 👁️ 56
📝

Почему Git победил другие системы контроля версий…

Сегодня Git — это стандарт де-факто для контроля версий в разработке программного обеспечения. Но так...

📅 06.05.2026 👁️ 51

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!