Ключові поняття

Git

Git — це система контролю версій, якою розробники користуються, щоб відстежувати зміни у програмних проєктах і керувати ними.

Уяви, що ти пишеш оповідання і з часом вносиш різні правки: щось видаляєш, щось додаєш, а подекуди повністю переписуєш цілі розділи. Якщо захочеться згадати або відновити попередню версію тексту, знадобиться детальний запис усіх змін.

Саме це Git і робить для розробки програм: він веде повну історію кожної зміни в коді.

Серце Git — репозиторій. Уяви його як директорію проєкту, яка містить не лише поточну версію всіх файлів проєкту, а й розлогий журнал кожної зміни, внесеної з моменту ініціалізації репозиторію. Коли розробники змінюють код, Git записує ці зміни у свою історію. Це дозволяє за потреби повертатися до попередніх версій коду, порівнювати зміни між версіями та працювати над одним проєктом разом з іншими.

Git розв'язує проблему керування змінами в коді з плином часу, особливо коли над одним проєктом працюють кілька розробників. Без системи контролю версій на кшталт Git було б складно відстежити, хто, що й коли змінив, а це прямий шлях до конфліктів і втраченої роботи. Git запобігає цим проблемам: він зберігає чітку історію змін і дозволяє розробникам працювати в окремих гілках кодової бази.

Git створив у 2005 році Лінус Торвальдс — інженер-програміст родом із Фінляндії, найбільш відомий як творець ядра Linux. Відтоді Git став незамінним інструментом сучасної розробки, особливо у спільноті відкритого коду. Платформи на кшталт GitHub, GitLab і Bitbucket побудували довкола Git цілі екосистеми з інструментами для співпраці, неперервної інтеграції та розгортання.

Інтерфейси Git

Основна стаття: Git CLI vs. GUI

Хоча Git — насамперед інструмент командного рядка, існує чимало графічних інтерфейсів, які роблять роботу з ним зручнішою. Такі інструменти особливо корисні для тих, хто тільки знайомиться з Git або віддає перевагу візуальному інтерфейсу. Багато популярних IDE, як-от Visual Studio Code та IntelliJ IDEA, мають вбудовану підтримку Git, тож ним легко користуватися прямо в середовищі розробки.

Git у терміналі macOS
Git у терміналі macOS
Git в інтерфейсі VS Code
Git в інтерфейсі VS Code

Контроль версій у звичайних програмах vs. Git

Багато інструментів, не пов'язаних із кодом (Google Docs, Microsoft Word чи Dropbox), мають якусь форму історії версій. Але вони працюють не так, як Git. Традиційні системи контролю версій відстежують зміни в кожному файлі окремо, незалежно від змін в інших файлах.

Наприклад, уяви, що я написав книжку в Google Docs, де кожен розділ — окремий документ. Книжка майже готова, і за кілька днів я надсилаю її видавцеві.

Увечері, перебравши вина, я вирішую дуже швиденько додати нову сюжетну лінію. Змінюю кілька розділів, докидаю абзаци тут і там. Настає ранок, і я розумію, що вся ця ідея — суцільний безлад, і хочу все скасувати.

На щастя, у Google Docs є історія документа, яка дозволяє повернути документ до попередньої версії. Але доведеться зайти в кожен змінений документ і скасувати його правки окремо. А якщо я випадково пропущу один із файлів... (та ні, такого точно ніколи не станеться).

Хоча всі ці зміни були частиною одного великого оновлення, в історії кожного документа вони існують цілком окремо.

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