XS
SM
MD
LG
Державний університет телекомунікацій

Адреса:
03110, Україна
м. Київ, вул. Солом'янська, 7
Контактна інформація:
Державний університет телекомунікацій

Системи контролю версій на прикладі Git

14:44, 23-03-2021

Що таке системи контролю версій?

У наш час розробка програмного забезпечення проходить за безмежною кількістю методик щодо розподілу задач у великих і малих командах. Але як може команда розробляти продукт на одній й тій самій кодовій базі? Саме для цього був розроблений один із найважливіших інструментів розробки - VCS або Version Control System. Окрім Git (розподілена система управління версіями) - найбільш популярної на цей час системи, є декілька інших - SVN, Mercurial тощо. На кафедрі Комп'ютерних наук ми намагаємося опанувати дану технологією.

Приклади використання

Якщо декілька розробників працюють над один й тим самим додатком, іноді одним і тим самим файлом або навіть у суміжних строках, Git дозволяє фіксувати зміни паралельно за допомогою декілька бранчей (branch), а потім зливати усі зміні в один бранч, наприклад основну кодову базу. Альтернативою без контролю версій було би збереження змін у кожного розробника локально, а потім вручную змішування змін на девайсі одного із них.

Окремою перевагою є можливість порівняти зміни за допомогою утиліти diff (або git diff), що дозволяє бачити лише зміни без порівняння усіх файлів.

Структура

Git не є централізованим сервером як файлові сервера. Замість цього він є розподіленим (distributed), тобто він може зберігатися одночасно локально та на серверах сервісів таких як GitHub, BitBucket, GitLab тощо. Виглядає він як звичайна директорія з файлам, за виключенням наявності директорії “.git”, що зберігає зміни за допомогою різниць тобто diff-ів. Тобто якщо в історії змін є великий файл, то Git не зберігає його копії, а тільки різницю між його станом до й після зміни. Ця директорія називається репозиторій.

Після деяких змін стан файлів фіксується за допомогою коммітів (commit). Комміт це контрольна точка у історії змін, наприклад комміт включає у себе зміну 3 файлів, створення 2 інших файлів, видалення одного файлу.

Для організації коммітів використовуються бранчі та теги. Бранчі - це вказівники на певний комміт, що змінюється при додавання інших. Вони використовуються при розробці версії або певної фічі. Коли приближається час релизу, розробник створює тег, що не відміну від бранча не може бути зміненим. Теги звичайно мають маркування як і версії ПЗ.

Операції

Git дозволяє полегшити життя розробника за допомогою повністю або частково автоматичних операцій:

  • операції commit/push/pull/fetch забезпечують додавання та синхронізацію змін між локальним та віддаленими репозиторіями;
  • операції merge/rebase/cherry-pick надають можливість змішувати зміни між бранчами;
  • операції status/log надають можливість слідкувати за змінами у проекті;
  • операції checkout/revert/reset забезпечують відміну змін та навігацію між коммітами, тегами або бранчами.

Додаткові функції Git сервісів

Крім звичайних команд, Git сервера такі як GitHub, GitLab тощо мають можливості:

  • створення та зберігання релізів, тобто файлів для використання ПЗ (наприклад .exe файл для встановлення на Windows);
  • створення issues, тобто тікетів на будь-яку проблему або нову фічу для ПЗ;
  • створення pull request (merge request для GitLab), що дозволяє перед додаванням змін у основний бранч надати іншому розробнику можливість перевірити ваш код, запропонувати поліпшення тощо.

Віталій Антонов
КНД 42

Читайте також

Про кафедру

Кафедра Комп'ютерних наук

Отримати консультацію

Ваш запит на зворотній дзвінок отримає завідуючий кафедрою
Надіслати запит

Абітурієнту

Спеціалізація: Комп’ютерні науки

За спеціальністю 122 Комп’ютерні науки (англ. Computer Science, CS) готуються фахівці, що здатні на високому професійному рівні виконувати загальні функції розробника-програміста, спеціаліста по мережах, адміністратора баз даних, системного адміністратора, DevOps Engineer, спеціаліста по тестуванню програм, IT-архітектора. Вони володіють навичками алгоритмічного мислення, уявлення інформації, програмування і проектування інформаційних систем. Основні розділи: алгоритми і структури даних, мови програмування, архітектура комп'ютерів, операційні системи і комп'ютерні мережі, розробка програмного забезпечення, бази даних та інформаційно-пошукові системи, штучний інтелект та робототехніка, комп'ютерна графіка, взаємодія людини і комп'ютера та ін.

Спеціалізація: Комп’ютерні науки

За спеціальністю 122 Комп’ютерні науки (англ. Computer Science, CS) готуються фахівці, що здатні на високому професійному рівні виконувати загальні функції розробника-програміста, спеціаліста по мережах, адміністратора баз даних, системного адміністратора, DevOps Engineer, спеціаліста по тестуванню програм, IT-архітектора. Вони володіють навичками алгоритмічного мислення, уявлення інформації, програмування і проектування інформаційних систем. Основні розділи: алгоритми і структури даних, мови програмування, архітектура комп'ютерів, операційні системи і комп'ютерні мережі, розробка програмного забезпечення, бази даних та інформаційно-пошукові системи, штучний інтелект та робототехніка, комп'ютерна графіка, взаємодія людини і комп'ютера та ін.

Переглядів: 1 828