Создание Pull Request в Git

Git — система контроля версий, инструмент совместной разработки программного продукта. Любая командная разработка программного обеспечения нуждается в удобном инструменте для отслеживания проделанной работы и внесенных изменений, фиксирования ответственных за коррекцию, создании возможности согласования наработок или отката в случае ошибок. Git незаменима, потому что:

  • Хранит историю разработки.
  • Контролирует права доступа к совместному коду.
  • Обеспечивает контроль версий программного продукта.

Git разработан Линусом Торвальдсом с целью упростить создание ядра Linux. Существует несколько способов управления проектом через Git: можно использовать веб-сервисы, такие как GitHub, или скачать графический Git-клиент. Существует несколько бесплатных клиентов для любых операционных систем, например, SmartGit. Так как ядро Git — это пакет программ для командной строки, им также удобно пользоваться непосредственно из этой локации. Функционал будет одинаков как в работе с веб-сервисом, так и в графическом клиенте. Новичкам рекомендуется углубляться в изучение консольной версии - так гораздо быстрее придет понимание команд и внутренней структуры.

Далее мы подробно разберем одну из команд Git - Pull Request.

Pull request — это предложение по изменению репозитория. Данный механизм используется в общей работе над программными продуктами. Позволяет скоординировать деятельность разработчиков и избежать путаницы. Любой, кто захочет изменить или доработать существующий проект, должен сделать следующие шаги.

Git: как сделать pull request

  • Команда Fork — создать локальную копию рабочего репозитория.
  • Доработать или изменить свою копию.
  • Команда Pull request — предложить изменения в коде владельцу репозитория.
  • Команда Merge — с помощью нее владелец репозитория одобряет изменения.
  • В системе Git pull request возможно создать двумя способами. Первый - через консоль, второй - используя возможности веб-сервиса, на котором расположен ваш репозиторий.

Pull Request - это "фича" исключительно Git-клиента GitHub, которая опирается на консольную команду request pull. Если необходимо сделать pull request через консоль, необходимо web API приложение, например hub. Делать pull request для GitHub из десктопного приложения можно, если оно поддерживает GitHub API.

Веб-сервис Git: create pull request

Чтобы предложить владельцу репозитория изменения в проекте, необходимо:

  • Зайти в ветку, содержащую исходный файл.
  • Нажать New pull request.
  • Если изменения были сделаны — откроется окно Comparing changes.
  • В нем можно уточнить путь, из какой ветки какого репозитория и куда необходимо отправлять изменения.
  • Нажать Create pull request.
  • Желательно уточнить в соответствующих полях, какие изменения были сделаны.
  • Теперь владелец репозитория увидит во вкладке Pull requests уведомление об изменениях.

Владелец в свою очередь может выполнить в репозитории Git "merge pull request". Это внесет изменения, предложенные разработчиком с основной веткой проекта.

Также довольно удобно использование консольного клиента Git. Pull Request делается через веб-сервис, если не установлен GitHub API, ниже будет показан алгоритм внесения изменений в удаленный репозиторий. Для внесения изменений в удаленный репозиторий через консоль после коррекции кода необходимо вводить следующие команды:

  • Команда git add NewFile.cxx — добавляем новый файл в локальный репозиторий.
  • Команда git commit -a -m commit message - создаем коммит, в commit message уточняем изменения в проекте.
  • Команда git push origin — внесение изменений в удаленный репозиторий (необходимо подтвердить свои логин и пароль).
  • Далее необходимо также воспользоваться веб-версией Git, на которой хранится ваш удаленный репозиторий, и создать pull request, используя руководство выше.

Merge

В Git Merge pull request - это команда слияния ветки разработки feature с основной веткой (master). Существует два паттерна слияния:

  • Истинное слияние. Происходит, когда необходимо внести несколько изменений в основную ветку разработки. То есть в ветке master создается новый коммит, который ссылается на несколько таких же атрибутов из feature.
  • Перемотка. Если история коммитов получилась без ветвлений, то указатель master перематывается вперед, и устанавливается на тот, на который указывала ветка feature.

Работа с Git

При работе с Git всегда важно помнить, что есть два репозитория - локальный и удаленный. Локальный создается на машине у разработчика после команды clone, к примеру, если разработчик хочет присоединиться к работе над проектом. То есть с системой контроля версий можно работать и без интернет-соединения, только команды pull и push потребуют связи с удаленным хранилищем. Локально в Git "pull request" сделать, конечно же, невозможно.

Операция Pull совершает слияние, если истории удаленно и локально различаются.

Операция Push отправляет все изменения, который отсутствуют в удаленном репозитории. Если в удаленном репозитории оказываются новые коммиты, то операция закончится неудачей.

То есть локально у разработчика присутствует ветка master, которая представляет из себя последнее изменение, и ветка origin/master — это состояние удаленного репозитория после последней операции Pull или Push.

Комментарии