Створення 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 можливо створити двома способами. Перший – через 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.