JavaRush /Курси /C# SELF /Знайомство з Git

Знайомство з Git

C# SELF
Рівень 26 , Лекція 0
Відкрита

1. Вступ

Уявіть, що ви пишете курсову або дипломну роботу. Почали писати — зберегли. Потім щось додали, перечитали, не сподобалося, видалили, додали нове — зберегли як "курсова-чернетка.docx". Через день внесли чимало правок, відправили на перевірку науковому керівникові, а він каже: «Попередній варіант був кращий. Поверніться до нього». І ось ви сидите, намагаєтеся згадати, що саме там змінили. Може, у вас є "курсова-фінал.docx", а потім ще "курсова-фінал-реально-фінал.docx", а потім "курсова-фінал-ТОЧНО-фінал.docx", і ви вже не памʼятаєте, де яка версія? Знайомо?

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

Якщо ви коли-небудь стикалися з такими ситуаціями, то вже інтуїтивно розумієте, навіщо потрібні системи контролю версій (Version Control Systems, VCS). Це своєрідні машини часу для вашого коду. Вони дозволяють:

  • записувати «знімки» стану вашого проєкту в будь-який момент часу;
  • повертатися до будь-якої попередньої версії проєкту, якщо щось пішло не так;
  • точно бачити, які рядки коду були додані, видалені або змінені між різними версіями;
  • дозволяють кільком розробникам одночасно працювати над одним проєктом, автоматично або напівавтоматично обʼєднуючи їхні зміни;
  • Вести історію: фіксувати, хто, коли і навіщо вносив ті чи інші зміни;

Одна з таких систем називається 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. Віддалений репозиторій

Це централізоване місце для зберігання вашого коду, зазвичай розміщене на таких сервісах, як GitHub, GitLab або Bitbucket. Вони забезпечують зберігання коду й є основою для спільної роботи. Віддалений репозиторій слугує точкою інтеграції для автоматизації процесів, таких як збірка, тестування та розгортання застосунків.

2. Локальний репозиторій

Локальний репозиторій — це ваша персональна копія коду, що зберігається на вашому компʼютері. У цьому репозиторії ви можете виконувати всі операції з Git (коміти, гілки, злиття) без потреби під’єднання до інтернету.

3. Робочий каталог

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

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

5. GitHub — ваше портфоліо

GitHubце провідна веб‑платформа для хостингу вихідного коду, що використовує систему контролю версій Git. Заснована у 2008 році, вона швидко стала одним із ключових інструментів для розробників у всьому світі.

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

6. Створення вашого першого репозиторію на GitHub

Крок 1. Зайдіть на https://github.com і зареєструйтеся.

Крок 2. Натисніть кнопку New repository для створення нового репозиторію.

Крок 3. Вкажіть параметри для репозиторію:

  1. Імʼя репозиторію: вигадайте осмислену назву.
  2. Публічний чи приватний: для навчальних проєктів краще обрати «Public», щоб його могли бачити інші.
  3. Add a README file: обовʼязково поставте цю позначку. README — це «обличчя» вашого проєкту.
  4. Add .gitignore: натисніть на розкривний список і виберіть шаблон для мови програмування.
  5. Choose a license: можна пропустити.
  6. Натисніть Create repository.

Крок 4. Вітаємо, ваш перший віддалений репозиторій створено!

7. Встановлення та налаштування Git

Хоч основи Git можна вивчати через консольні команди (як показано у відео), у щоденній роботі 99 % розробників користуються зручними інструментами, вбудованими в середовище розробки. Наша мета — навчити вас працювати так, як це роблять профі.

Інтерфейс для роботи з Git у всіх сучасних IDE від JetBrains — чи то IntelliJ IDEA для Java/Kotlin, чи то Rider для C#, чи то PyCharm для Python — майже ідентичний. Це означає, що навчившись працювати з Git в одному середовищі, ви зможете легко застосовувати ці навички в будь‑якому іншому. Тому ми будемо використовувати IntelliJ IDEA як універсальний приклад. Усе, що побачите тут, виглядатиме й працюватиме так само у вашій улюбленій IDE.

Щоб працювати з Git на вашому компʼютері, спершу потрібно його встановити. Якщо ви користуєтеся IntelliJ IDEA, вона, швидше за все, запропонує встановити Git автоматично, якщо його не знайдено в системі. Радимо погодитися — це найпростіший шлях.

Закрийте поточний проєкт, вибравши File > Close Project, і натисніть Clone Repository.

Якщо ж хочете встановити Git вручну, скористайтеся офіційним сайтом: https://git-scm.com/downloads.

8. Трохи історії: main vs master

Раніше гілка в Git за замовчуванням називалася master. Проте у 2020 році спільнота розробників і найбільші платформи, зокрема GitHub, перейшли на використання більш нейтрального терміна — main.

Це важливо знати, адже у деяких старих статтях або проєктах ви досі можете зустріти згадку гілки master. У наших лекціях і в сучасних проєктах основною гілкою завжди буде main.

Детальніше про перехід на main можна дізнатися за такими посиланнями:

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ