Git — система контроля версий, инструмент совместной разработки программного продукта. Любая командная разработка программного обеспечения нуждается в удобном инструменте для отслеживания проделанной работы, внесенных изменений, фиксирования ответственных за коррекцию, создание возможности согласования наработок или отката в случае ошибок. Git незаменима, потому что:
- Хранит историю разработки.
- Контролирует права доступа к совместному коду.
- Обеспечивает контроль версий программного продукта.
Вам будет интересно:Логический тип данных в информатике
Git разработан Линусом Торвальдсом с целью упростить создание ядра Linux. Существует несколько способов управления проектом через Git: можно использовать веб-сервисы, такие как GitHub, или скачать графический Git-клиент. Существует несколько бесплатных клиентов для любых операционных систем, например, SmartGit. Так как ядро Git — это пакет программ для командной строки, им также удобно пользоваться непосредственно из этой локации. Функционал будет одинаков как в работе с веб-сервисом, так и в графическом клиенте. Новичкам рекомендуется углубляться в изучение консольной версии - так гораздо быстрее придет понимание команд и внутренней структуры.
Далее мы подробно разберем одну из команд Git - Pull Request.
Pull request — это предложение по изменению репозитория. Данный механизм используется в общей работе над программными продуктами. Позволяет скоординировать деятельность разработчиков и избежать путаницы. Любой, кто захочет изменить или доработать существующий проект, должен сделать следующие шаги.
Git: как сделать pull request
- Команда Fork — создать локальную копию рабочего репозитория.
- Доработать или изменить свою копию.
- Команда Pull request — предложить изменения в коде владельцу репозитория.
- Команда Merge — с помощью нее владелец репозитория одобряет изменения.
- В системе Git pull request возможно создать двумя способами. Первый - через Git клиент, второй - используя возможности веб-сервиса, на котором расположен ваш репозиторий.
Веб-сервис Git: create pull request
Чтобы предложить владельцу репозитория изменения в проекте, необходимо:
- Зайти в ветку, содержащую исходный файл.
- Нажать New pull request.
- Если изменения были сделаны — откроется окно Comparing changes.
- В нем можно уточнить путь, из какой ветки какого репозитория и куда необходимо отправлять изменения.
- Нажать Create pull request.
- Желательно уточнить в соответствующих полях, какие изменения были сделаны.
- Теперь владелец репозитория увидит во вкладке Pull requests уведомление об изменениях.
Владелец в свою очередь может выполнить в репозитории Git merge pull request. Это внесет изменения, предложенные разработчиком с основной веткой проекта.
Также довольно удобно использование консольного клиента Git. Pull Request делается через веб-сервис, ниже будет показан алгоритм внесения изменений в удаленный репозиторий. Для внесения изменений в удаленный репозиторий через консоль после коррекции кода необходимо вводить следующие команды:
- Команда 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.