У наш час розробка програмного забезпечення проходить за безмежною кількістю методик щодо розподілу задач у великих і малих командах. Але як може команда розробляти продукт на одній й тій самій кодовій базі? Саме для цього був розроблений один із найважливіших інструментів розробки - VCS або Version Control System. Окрім Git (розподілена система управління версіями) - найбільш популярної на цей час системи, є декілька інших - SVN, Mercurial тощо. На кафедрі Комп'ютерних наук ми намагаємося опанувати дану технологією.
Якщо декілька розробників працюють над один й тим самим додатком, іноді одним і тим самим файлом або навіть у суміжних строках, Git дозволяє фіксувати зміни паралельно за допомогою декілька бранчей (branch), а потім зливати усі зміні в один бранч, наприклад основну кодову базу. Альтернативою без контролю версій було би збереження змін у кожного розробника локально, а потім вручную змішування змін на девайсі одного із них.
Окремою перевагою є можливість порівняти зміни за допомогою утиліти diff (або git diff), що дозволяє бачити лише зміни без порівняння усіх файлів.
Git не є централізованим сервером як файлові сервера. Замість цього він є розподіленим (distributed), тобто він може зберігатися одночасно локально та на серверах сервісів таких як GitHub, BitBucket, GitLab тощо. Виглядає він як звичайна директорія з файлам, за виключенням наявності директорії “.git”, що зберігає зміни за допомогою різниць тобто diff-ів. Тобто якщо в історії змін є великий файл, то Git не зберігає його копії, а тільки різницю між його станом до й після зміни. Ця директорія називається репозиторій.
Після деяких змін стан файлів фіксується за допомогою коммітів (commit). Комміт це контрольна точка у історії змін, наприклад комміт включає у себе зміну 3 файлів, створення 2 інших файлів, видалення одного файлу.
Для організації коммітів використовуються бранчі та теги. Бранчі - це вказівники на певний комміт, що змінюється при додавання інших. Вони використовуються при розробці версії або певної фічі. Коли приближається час релизу, розробник створює тег, що не відміну від бранча не може бути зміненим. Теги звичайно мають маркування як і версії ПЗ.
Git дозволяє полегшити життя розробника за допомогою повністю або частково автоматичних операцій:
Крім звичайних команд, Git сервера такі як GitHub, GitLab тощо мають можливості:
Віталій Антонов
КНД 42