1. Проблема без контролю версій: чому просто копіювати файли — погана ідея
Почнімо із життєвої ситуації. Уявіть: ви працюєте над своїм проєктом на C++. Усе йде добре, аж раптом настає час «експериментів». Ви вирішуєте щось змінити, але боїтеся зламати робочу версію. Що робити? Звісно ж, копіювати проєкт!
Зрештою на вашому диску зʼявляються такі шедеври:
MyProject/
├── main.cpp
├── main_backup.cpp
├── main_final.cpp
├── main_final2.cpp
├── main_точно_финал.cpp
├── main_точно_точно_финал.cpp
Знайомо? А тепер уявіть, що до проєкту приєднався ще й друг. Він теж любить копіювати файли, але по-своєму. Як зрозуміти, де найсвіжіша й робоча версія? Як дізнатися, хто і що змінив? Як повернути все назад, якщо експеримент не вдався?
Без контролю версій:
- Легко втратити або переплутати робочий код.
- Неможливо «відкотитися» до старої версії.
- Складно працювати удвох або втрьох.
- Виникає хаос і страх перед експериментами.
Саме ці проблеми й розвʼязують системи контролю версій — такі як Git.
Відео
Перегляньте лекцію від ментора JavaRush Університету. Відео дасть вам міцну базу для роботи з Git у терміналі — це допоможе зрозуміти механіку процесів, прихованих за кнопками IDE.
Відео складається з двох частин:
- Спочатку ви опануєте основи роботи з Git через термінал. Цей базовий підхід допоможе вам зрозуміти, що відбувається «під капотом» системи.
- Потім ви перейдете до практики в IntelliJ IDEA, де навчитеся виконувати ті самі операції через зручний графічний інтерфейс — саме так щодня працюють професіонали.
У відео ментор використовує приклади на Java. Нехай це вас не бентежить! Git — універсальна технологія, тож принципи роботи з версіями однакові для C++, Java і Python. Зосередьтеся на командах Git і логіці їхньої роботи, а не на коді проєкту.
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: натисніть випадний список і виберіть шаблон C++. Це дуже важливо: компілятори C++ створюють багато тимчасових і бінарних файлів, наприклад у каталогах збирання, які не повинні засмічувати ваш репозиторій. Цей шаблон допоможе Git автоматично їх ігнорувати.
- Choose a license: можна пропустити.
- Натисніть
Create repository.
Крок 4. Вітаємо! Ваш перший віддалений репозиторій створено.
7. Встановлення та налаштування Git
Хоча основи Git можна опановувати за допомогою команд у консолі, як показано у відео, у щоденній роботі 99 % розробників користуються зручними інструментами, вбудованими в середовище розроблення. Наша мета — навчити вас працювати так, як працюють професіонали.
Інтерфейс для роботи з Git у всіх сучасних IDE від JetBrains — чи то CLion для C++, IntelliJ IDEA для Java/Kotlin або PyCharm для Python — майже однаковий. Це означає, що, навчившись працювати з Git в одному середовищі, ви зможете легко застосовувати ці навички в будь-якому іншому.
У цьому курсі для демонстрації прикладів ми використовуватимемо скриншоти з IntelliJ IDEA. Не хвилюйтеся: у CLion усі кнопки, меню та панелі розташовані рівно на тих самих місцях.
Щоб працювати з Git на вашому компʼютері, спершу потрібно встановити Git. Якщо ви використовуєте IDE від JetBrains, вона, найімовірніше, запропонує зробити це автоматично, якщо не знайде Git у системі. Ми рекомендуємо погодитися з цією пропозицією — це найпростіший шлях.
Закрийте поточний проєкт, обравши у верхньому меню File | Close Project. На стартовому екрані (Welcome Screen) натисніть кнопку Clone Repository (у деяких версіях інтерфейсу вона може називатися Get from VCS).
Якщо ж ви хочете встановити Git вручну, скористайтеся офіційним сайтом: https://git-scm.com/downloads.
Важливий нюанс
Коли ви створюватимете свій перший коміт в IDE, IntelliJ IDEA попросить указати ваші дані — імʼя користувача та email. Дуже важливо вказати саме ту адресу email, на яку зареєстровано ваш обліковий запис GitHub.
Річ у тім, що GitHub повʼязує авторство ваших комітів із вашим профілем саме за цією email-адресою. Якщо адреси збігатимуться, поруч із вашими комітами зʼявиться ваш аватар, а на сторінці профілю — ті самі заповітні «зелені квадратики» активності, на які так часто звертають увагу роботодавці.
8. Трохи про історію: main vs master
Раніше основна гілка в Git за замовчуванням називалася master. Однак у 2020 році спільнота розробників і найбільші платформи, зокрема GitHub, перейшли на використання нейтральнішого терміна — main.
Це важливо знати, адже в деяких старих статтях або проєктах ви й досі можете зустріти назву гілки master. У наших лекціях і в сучасних проєктах основною гілкою завжди буде main.
Докладніше про перехід на main можна дізнатися за такими посиланнями:
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ