1. Проблема без контролю версій: чому просто копіювати файли — погана ідея
Почнімо з життєвої ситуації. Уявіть, що ви працюєте над своїм Kotlin-проєктом. Усе йде добре, доки не настає момент «експериментів». Ви вирішуєте щось змінити, але боїтеся зламати робочу версію. Що робити? Звісно ж, скопіювати проєкт!
У підсумку на вашому диску зʼявляються такі шедеври:
MyProject/
├── Main.kt
├── Main_backup.kt
├── Main_final.kt
├── Main_final2.kt
├── Main_точно_фінал.kt
├── Main_точно_точно_фінал.kt
Знайомо? А тепер уявіть, що до проєкту долучився ще й друг. Він теж любить копіювати файли — тільки по-своєму. Як зрозуміти, де найсвіжіша й робоча версія? Як дізнатися, хто й що змінив? Як повернути все назад, якщо експеримент не вдався?
Без контролю версій:
- Легко втратити або переплутати робочий код.
- Неможливо «відкотитися» до попередньої версії.
- Складно працювати вдвох або втрьох.
- Хаос і страх перед експериментами.
Саме ці проблеми й розвʼязують системи контролю версій — зокрема Git.
Відео
Перегляньте лекцію від одного з провідних менторів JavaRush Університету. Він занурить вас у світ Git — ключової технології для будь-якого сучасного розробника.
Відео складається з двох частин:
- Спочатку ви розберете основи роботи з Git через термінал. Цей підхід допоможе вам зрозуміти, що саме відбувається «під капотом» системи.
- Потім ви перейдете до практики в IntelliJ IDEA й навчитеся виконувати ті самі операції за допомогою зручного графічного інтерфейсу — так, як це щодня роблять професіонали.
2. Навіщо розробнику потрібен Git?
Git — це потужна система керування версіями, яку використовують, щоб відстежувати зміни у вихідному коді під час розроблення програмного забезпечення. Вона дає змогу зберігати різні версії файлів і координувати роботу кількох людей над спільним проєктом.
Основні поняття Git:
Репозиторій
Репозиторій, або «репо», — це місце, де зберігається вся історія проєкту, включно з усіма змінами та версіями файлів.
Коміти
commit — це збережений стан проєкту. Кожен коміт у Git містить інформацію про те, які зміни внесено, ким і коли. Коміти утворюють історію проєкту та дають змогу повернутися до будь-якої попередньої версії.
gitGraph
commit id: "1"
commit id: "2"
commit id: "3"
commit id: "4"
commit id: "5"
commit id: "6"
Кожен коміт — це «знімок» проєкту. Він іде за попереднім і формує послідовну історію змін.
Гілки
branch — це незалежна лінія розроблення. За замовчуванням Git створює гілку main. Ви можете створювати нові гілки для розроблення нового функціоналу або виправлень, а потім обʼєднувати їх назад в основну гілку.
gitGraph
commit id: "1"
commit id: "2"
branch develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout main
commit id: "6"
commit id: "7"
merge develop
commit id: "8"
commit id: "9"
Від основної гілки main «відгалужується» гілка develop для паралельного розроблення. Після завершення роботи зміни з develop зливаються назад у main.
3. Основні команди Git (те, що під капотом)
Нижче наведено список основних команд для роботи з Git через термінал. Важливо розуміти, які команди лежать в основі всіх операцій. Утім, ми дотримуватимемося GUI-підходу й навчимося виконувати всі ці дії за допомогою зручного графічного інтерфейсу IntelliJ IDEA. Сприймайте ці команди як те, що відбувається «під капотом».
| Команда | Опис |
|---|---|
git init |
Ініціалізує новий Git-репозиторій у поточному каталозі. |
git clone |
Клонує репозиторій з URL у новий каталог. |
git add |
Додає файли в індекс для наступного коміту. |
git commit |
Фіксує підготовлені зміни в репозиторії. |
git push |
Надсилає зміни з локального репозиторію до віддаленого. |
git pull |
Оновлює поточну гілку до останньої версії з віддаленого репозиторію. |
git branch |
Показує, створює або видаляє гілки. |
git merge |
Зливає зміни вказаної гілки в поточну гілку. |
Ці команди — базові інструменти роботи в Git. Вони дають змогу керувати змінами коду, гілками та злиттями в проєктах будь-якого розміру.
sequenceDiagram
participant Робочий каталог
participant Область індексації (Staging)
participant Локальний репозиторій
participant Віддалений репозиторій
Робочий каталог ->> Область індексації (Staging): git add (Підготувати)
Область індексації (Staging) ->> Локальний репозиторій: git commit (Зберегти локально)
Локальний репозиторій ->> Віддалений репозиторій: git push (Відправити на сервер)
Віддалений репозиторій ->> Робочий каталог: git pull (Завантажити оновлення)
4. Чотири стани (місця зберігання) коду
Коли ви користуватиметеся системою контролю версій, ваш код логічно проходитиме через чотири стани:
1. Робочий каталог (Working Directory)
Робочий каталог на вашому компʼютері містить актуальні файли проєкту, над якими ви працюєте зараз. Це місце, де ви можете бачити й змінювати файли, писати код, додавати новий функціонал або виправляти помилки.
2. Область індексації (Staging Area)
Це проміжна зона між робочою папкою та локальним репозиторієм. У термінах графічного інтерфейсу IDE (GUI) це ті самі прапорці, які ви ставите навпроти змінених файлів перед тим, як натиснути кнопку Commit. Ви самі обираєте, які саме файли й зміни готові увійти до наступного «знімка» історії.
3. Локальний репозиторій (Local Repository)
Локальний репозиторій — це ваша персональна копія історії коду, що зберігається на вашому компʼютері. У цьому репозиторії ви можете виконувати всі операції з Git (коміти, розгалуження, злиття) без потреби під’єднуватися до інтернету.
4. Віддалений репозиторій (Remote Repository)
Це централізоване місце для зберігання вашого коду. Зазвичай воно розміщене на таких сервісах, як GitHub, GitLab або Bitbucket. Вони забезпечують надійне зберігання коду на серверах і є основою для спільної роботи в команді.
5. GitHub — ваше портфоліо
Важливо чітко розрізняти два поняття: Git і GitHub. Git — це програма, яка працює на вашому компʼютері локально (навіть без інтернету) і стежить за версіями файлів. А GitHub — це хмарний сервіс (сайт), де зберігаються віддалені копії ваших Git-репозиторіїв.
GitHub — провідна вебплатформа для хостингу вихідного коду, яка використовує систему контролю версій Git. Заснована 2008 року, вона швидко стала одним із ключових інструментів для розробників у всьому світі.
GitHub дає можливість створювати репозиторії для керування проєктами, контролювати й відстежувати зміни в коді та співпрацювати з іншими розробниками. Для сучасного розробника профіль на GitHub — важлива частина портфоліо, яке можна показати потенційним роботодавцям.
6. Створення вашого першого репозиторію на GitHub
Крок 1. Зайдіть на https://github.com і зареєструйтеся.
Крок 2. Натисніть кнопку New repository, щоб створити новий репозиторій.
Крок 3. Задайте параметри репозиторію:
- Назва репозиторію: придумайте змістовну назву.
- Публічний або приватний: для навчальних проєктів краще обрати «Public», щоб його могли бачити інші.
- Add a README file: обовʼязково поставте цей прапорець. README — це «обличчя» вашого проєкту.
- Add .gitignore: натисніть на випадний список і виберіть шаблон Kotlin (або Java). Це вбереже ваш репозиторій від потрапляння до нього важких результатів збирання та локальних налаштувань IDE.
- Choose a license: можна пропустити.
- Натисніть
Create repository.
Крок 4. Вітаємо, ваш перший віддалений репозиторій створено!
7. Встановлення та налаштування Git
Хоча основи Git можна вивчати за допомогою консольних команд (як показано у відео), у щоденній роботі 99 % розробників користуються зручними інструментами, вбудованими в середовище розроблення. Наша мета — навчити вас працювати так, як це роблять професіонали.
Інтерфейс для роботи з Git в усіх сучасних IDE від JetBrains — чи то IntelliJ IDEA для Kotlin/Java, Rider для C# або PyCharm для Python — практично однаковий. Це означає, що, навчившись працювати з Git в одному середовищі, ви зможете легко застосовувати ці навички в будь-якому іншому.
Тому ми використовуватимемо IntelliJ IDEA як універсальний приклад. Усе, що ви побачите тут, виглядатиме й працюватиме так само й у вашій улюбленій IDE.
Щоб працювати з Git на вашому компʼютері, його спочатку потрібно встановити. Якщо ви використовуєте IntelliJ IDEA, вона, найімовірніше, запропонує встановити Git автоматично, якщо не знайде його в системі. Радимо погодитися: це найпростіший шлях.
Закрийте поточний проєкт, вибравши у верхньому меню File | Close Project. На стартовому екрані (Welcome Screen) натисніть кнопку Clone Repository (у деяких версіях інтерфейсу вона може називатися Get from VCS).
Якщо ж ви хочете встановити Git вручну, скористайтеся офіційним сайтом: https://git-scm.com/downloads.
Важливий нюанс
Коли ви робитимете свій перший коміт в IDE, IntelliJ IDEA попросить вас представитися — вказати імʼя користувача та адресу електронної пошти. Надзвичайно важливо вказати саме ту адресу, на яку ви зареєстрували обліковий запис на GitHub.
Річ у тім, що GitHub привʼязує авторство ваших комітів до вашого профілю саме за цією адресою електронної пошти. Якщо адреси збігатимуться, поруч із вашими комітами зʼявиться ваш аватар. А на сторінці профілю почнуть зафарбовуватися ті самі заповітні «зелені квадратики» активності, на які часто звертають увагу роботодавці.
8. Трохи про історію: main vs master
Раніше гілка в Git за замовчуванням називалася master. Однак 2020 року спільнота розробників і найбільші платформи, зокрема GitHub, перейшли на використання більш нейтрального терміна — main.
Це важливо знати, адже в деяких старих статтях або проєктах ви й досі можете зустріти згадку гілки master. У наших лекціях і в сучасних проєктах основною гілкою завжди буде main.
Детальніше про перехід на main можна дізнатися за такими посиланнями:
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ