linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Главы
  • How it works
  • Уроки
  • База знаний
  • Собеседование
home/git/kb/Совместная работа/auto-merge

kb/collab ── Совместная работа ── intermediate

Auto-merge для PR

Режим, в котором PR сольётся автоматически как только пройдут все required reviews и checks. Включается через `gh pr merge --auto` или кнопку «Enable auto-merge» в UI. Освобождает от ручного клика по «merge» после получения approve и зелёного CI.

view as markdownaka: automerge, pr-auto-merge

Auto-merge - функция GitHub, при которой PR помечается «слить, когда все условия выполнены». Полезно, когда:

  • Ты получил review с правками, ответил пушем, и теперь ждёшь зелёного CI. Вместо ожидания у компьютера ставишь auto-merge и идёшь делать другую задачу.
  • У тебя open PR на котором нужен approve от занятого reviewer'а. Включаешь auto-merge, когда reviewer apprоve'ит - PR сольётся автоматически.

Включение

Через CLI:

bash
gh pr merge 123 --auto --squash --delete-branch

Флаги стратегии (--squash, --rebase, --merge) обязательны: auto-merge должен знать, какой стратегией сливать.

Через UI: на странице PR кнопка «Enable auto-merge» (рядом с обычной merge-кнопкой). Появляется dropdown стратегии, выбираешь.

Условия слияния

Auto-merge срабатывает, когда все выполнены:

  • Required reviews получены (если в branch-protection стоит «Require approvals»).
  • Required status checks зелёные (если стоит «Require status checks to pass»).
  • Если стоит «Require branches to be up to date» -ветка обновлена относительно target'а.
  • Все conversation resolved (если стоит «Require conversation resolution»).
  • Для CODEOWNERS-paths получен approve от owner'а (если стоит «Require review from Code Owners»).

Если хоть одно условие не выполнено, auto-merge ждёт.

Отмена

Auto-merge можно снять:

bash
gh pr merge 123 --disable-auto

Или кнопка «Disable auto-merge» в UI.

Также auto-merge автоматически отменяется, если:

  • Кто-то поставил Request Changes review.
  • Кто-то запушил force-push на ветку PR (теряется approve).
  • Required check failed.

Подводные камни

  • Auto-merge должен быть включён в Settings репо. Settings -> General -> Pull Requests -> «Allow auto-merge». По умолчанию отключено.
  • Без required conditions auto-merge срабатывает мгновенно. Это, по сути, обычный merge. Полезно только когда есть что ждать.
  • На public-репо автору auto-merge может оказаться недоступен, если есть branch protection с required reviewers и автор не может approve самого себя.
  • Auto-merge не догоняет main. Если включено «Require branches to be up to date», и main ушёл вперёд, auto-merge не делает rebase сам. Нужно либо вручную rebase, либо включить «Automatically update branches» в Repo Settings.

Merge queue (продвинутый случай)

На больших репо с активным main одного auto-merge мало: пока ты ждёшь зелёного CI, в main приходит чужой PR, твой CI устаревает. GitHub Merge Queue решает это: PR'ы выстраиваются в очередь, GitHub собирает временную ветку gh-readonly-queue/... (event merge_group), куда добавляет коммиты PR'ов в порядке очереди поверх свежего main, прогоняет CI на этой ветке и при зелёном результате fast-forward'ит main. Каждый PR проверяется в том состоянии, в котором он реально вольётся - конфликты и регрессии, возникающие от сочетания PR'ов, ловятся до merge.

§ команды

bash
gh pr merge --auto --squash --delete-branch

Включить auto-merge для текущего PR со squash

bash
gh pr merge 123 --disable-auto

Отменить auto-merge на PR 123

§ см. также

  • pull-requestPull Request (PR)Запрос на влитие ветки в основную с прохождением ревью и CI. На GitHub/GitLab/Bitbucket - стандартный механизм совместной работы. Технически это не команда Git, а функция хостинга, надстроенная над веткой и серией коммитов.
  • branch-protectionBranch protection rulesНабор правил, которые GitHub/GitLab/Bitbucket применяет к попыткам изменить защищённую ветку. Запрещает прямой push, требует PR с approve, требует зелёный CI, блокирует force-push. Без них любой с write-доступом может затереть main одним коммитом.
  • merge-strategiesСтратегии merge PR (GitHub)В GitHub три кнопки для merge PR: Create a merge commit (--no-ff, с merge-коммитом), Squash and merge (один сжатый коммит без родителя из ветки), Rebase and merge (rebase + fast-forward без merge-коммита). Команды выбирают одну для всего проекта.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки