Skip to content
279 changes: 278 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,291 @@ Git дозволяє безпечно керувати кодом, відсте
</details>

<details>
<summary>2. ???</summary>
<summary>2. Чим Git відрізняється від інших систем контролю версій, наприклад, SVN або Mercurial?</summary>

#### GIT

- **Розподіленість:** у Git кожен клон репозиторію містить повну історію, на
відміну від централізованих VCS (SVN).

- **Швидкість:** локальні операції (commit, diff, log) виконуються дуже швидко.

- **Гнучке керування гілками:** lightweight branches і швидке злиття
(merge/rebase).

- **Зберігання змін:** Git зберігає снімки (snapshots) файлів, а не тільки
дельти, як у SVN.

- **Широка інтеграція:** популярність Git забезпечує підтримку в CI/CD, GitHub,
GitLab, IDE.

- **Безпека:** SHA-1 хешування гарантує цілісність історії.

Git ідеально підходить для сучасних командних workflow та open-source проєктів
завдяки швидкості, гнучкості та надійності.

</details>

<details>
<summary>3. У чому відмінність між Git і GitHub?</summary>

#### GIT

- **Git** — система контролю версій (VCS) для відстеження змін у коді локально
або на будь-якому сервері.

- **GitHub** — онлайн-сервіс для зберігання Git-репозиторіїв з веб-інтерфейсом,
спільною роботою та додатковими функціями: pull requests, issues, CI/CD
інтеграції.

- Коротко: Git — інструмент для роботи з версіями коду, GitHub — платформа для
хостингу та командної роботи з Git.

Можна використовувати Git без GitHub (локально) або GitHub безпосередньо для
колаборації через веб.

</details>

<details>
<summary>4. Що таке репозиторій у Git і яка його роль?</summary>

#### GIT

- **Репозиторій (repository, repo)** — це місце зберігання всього коду проєкту
та історії змін.

- Містить:

- Файли проєкту (код, документацію, конфігурації).

- Історію комітів (зміни з авторами та повідомленнями).

- Гілки (branches) для паралельної розробки.

- Може бути локальний (на вашому комп’ютері) або віддалений (GitHub, GitLab,
Bitbucket).

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

</details>

<details>
<summary>5. Що таке коміт (commit) у Git і для чого він використовується?</summary>

#### GIT

- **Коміт (commit)** — це збереження знімка змін у репозиторії разом із
повідомленням.

- Містить:

- Історію змін файлів (added, modified, deleted).

- Авторство та дату зміни.

- Унікальний SHA-1 хеш для ідентифікації.

- Використовується для:

- Відстеження прогресу проєкту.

- Повернення до попередніх станів (git checkout, git revert).

- Координації роботи в команді через pull/merge.

#### Приклад коміту:

```bash
git add index.html

git commit -m "feat(html): Додаю базову структуру сторінки"
```

Коміти формують історію проєкту, яку можна аналізувати, відновлювати і
об’єднувати.

</details>

<details>
<summary>6. Яка різниця між робочим каталогом (working directory), стейджингом (staging area/index) і репозиторієм (repository) у Git?</summary>

#### GIT

1. **Робочий каталог (Working Directory)**

- Це ваші файли на диску, які ви редагуєте.

- Містить останню версію коду з Git + незбережені зміни.

2. **Проміжна область (Staging Area / Index)**

- Тимчасове місце для підготовки змін до коміту.

- Ви обираєте, які файли/зміни будуть включені у наступний коміт.

- Команди: git add `<file>` додає зміни до стейджу.

3. **Локальний репозиторій (Repository)**

- Збережена історія комітів у .git папці.

- Містить всі коміти, гілки, теги, SHA-1 хеші.

- Команди: git commit переносить зміни зі стейджу у репозиторій.

#### Схематично:

```rust
Working Directory -> git add -> Staging Area -> git commit -> Repository
```

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

</details>

<details>
<summary>7. Що таке розгалуження (branching) у Git і чому воно важливе?</summary>

#### GIT

- **Розгалуження (branch)** — це окрема лінія розробки в репозиторії, яка
дозволяє працювати над новими функціями, виправленнями або експериментами, не
зачіпаючи основну гілку (main/master).

- Важливість:

- Паралельна робота кількох розробників.

- Безпечне тестування нових фіч.

- Легка інтеграція через merge або rebase.

- Чистіша історія комітів і контроль над змінами.

#### Приклад створення і перемикання гілки:

```bash
git branch feature-login

git checkout feature-login
```

Branching — основа сучасних workflow (Git Flow, GitHub Flow) для командної
розробки.

</details>

<details>
<summary>8. Що таке HEAD у Git і яка його роль?</summary>

#### GIT

- **HEAD** — це поточний вказівник на коміт, з яким ви зараз працюєте.

- Зазвичай HEAD показує на гілку, а гілка — на останній коміт.

- Використовується для:

- Відстеження, де ви зараз перебуваєте в історії комітів.

- Перемикання гілок (git checkout `<branch>`) або комітів (git checkout
`<commit>`).

- Можливі стани HEAD:

- **Normal** — вказує на гілку.

- **Detached HEAD** — тимчасово вказує на конкретний коміт, не на гілку.

#### Приклад:

```bash
git checkout feature-login

# HEAD тепер вказує на гілку feature-login
```

HEAD — ключовий концепт для навігації по історії Git і управління комітами.

</details>

<details>
<summary>9. Що таке операція clone у Git і для чого вона використовується?</summary>

#### GIT

- `git clone` — створює повну копію віддаленого репозиторію на вашому локальному
комп’ютері.

- **_Копія містить:_**

- Усі файли проєкту.

- Історію комітів.

- Всі гілки та теги.

- **_Використовується для:_**

- Початку роботи над існуючим проєктом.

- Спільної роботи команди через GitHub, GitLab або інші сервери.

#### Приклад:

```bash
git clone https://github.com/user/repo.git
```

Результат: локальний репозиторій, готовий для комітів, гілок і синхронізації з
віддаленим сервером.

</details>

<details>
<summary>10. Як Git зберігає дані про проєкт і його історію змін?</summary>

#### GIT

- Git зберігає снімки (snapshots), а не просто дельти файлів.

- **Кожен коміт — це SHA-1 хеш з:**

- Посиланням на попередній коміт.

- Змінами файлів (знімком дерева).

- Автором і повідомленням коміту.

- **Структура зберігання:**

- `Blob` — вміст файлів.

- `Tree` — каталог файлів та папок.

- `Commit` — вказує на tree і попередній коміт.

- Папка `.git` містить всі об’єкти і метадані, що дозволяє повністю відтворити
історію проєкту.

👉 Така модель робить Git швидким, надійним і дозволяє ефективно працювати з
гілками та злиттями.

</details>

<details>
<summary>11. ???</summary>

#### GIT

- Coming Soon... 😎

</details>

---

# GIT <img src="./assets/git.svg" width="40" height="40" alt="GIT logo"/>

Вітаю! ✨ Цей репозиторій містить вичерпний конспект, який я створила під час
Expand Down