В современной практике разработки программного обеспечения наиболее популярны две модели совместной работы с Git-репозиториями:

Fork + Pull

Модель Fork + Pull позволяет любому пользователю создать личную копию репозитория (fork), внести в неё изменения и затем предложить их слияние владельцу (мэйнтэйнеру) оригинального git-репозитория через механизм pull request (PR в GitHub и Gite, Merge Request (MR) в Gitlab).
Особенности:

  • Не требует доступа на запись в основной репозиторий.
  • Упрощает участие новых контрибьюторов (тех, кто вносит изменения).
  • Идеально подходит для open source проектов.
  • Позволяет работать независимо, без постоянной координации с основной командой.

Общий репозиторий

Модель общего репозитория (Shared Repository) используется внутри команд и организаций, чаще всего при работе над закрытыми проектами. Все участники имеют доступ на запись в один и тот же репозиторий.

  • Изоляция изменений обеспечивается через тематические ветки (topic branches).
  • Требует больше доверия и внутренней координации.
  • Хорошо подходит для малых и средних команд.
  • Нередко сочетается с обязательными код-ревью через pull request’ы.

Роль Pull Request’ов

Pull request’ы особенно важны в модели «Fork + Pull» как способ взаимодействия с основной командой проекта. Однако и в модели общего репозитория они активно применяются — для обсуждения, рецензирования и контроля качества кода перед слиянием изменений в основную ветку.