Skip to content
276 changes: 275 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,281 @@ git clone https://github.com/user/repo.git
</details>

<details>
<summary>11. ???</summary>
<summary>11. Як ініціалізувати новий репозиторій Git?</summary>

#### GIT

- Використати команду:

```bash
git init
```

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

- Далі треба додати файли й зробити перший коміт:

```bash
git add .

git commit -m "Initial commit"
```

Після git init каталог стає повноцінним Git-репозиторієм.

</details>

<details>
<summary>12. Для чого використовується команда git status?</summary>

#### GIT

- Показує поточний стан робочого каталогу та індексу (staging area).

- Інформує про:

- Які файли змінені, але ще не додані.

- Які файли вже в індексі та підуть у наступний коміт.

- Які файли не відслідковуються.

- Поточну гілку та її відставання/випередження відносно remote.

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

```bash
git status
```

Дає зрозуміти, що саме буде закомічено, а що ще потребує git add.

</details>

<details>
<summary>13. Яке призначення команди git add?</summary>

#### GIT

- `git add` додає зміни з робочого каталогу у staging area (індекс).

- Це підготовчий етап перед комітом.

- Можна додавати окремі файли або всі зміни.

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

```bash
git add file.txt # додає конкретний файл
git add . # додає всі зміни в поточному каталозі
git add -p # додає зміни частинами (interactive)
```

Сам `git add` ще не зберігає зміни в історії — тільки позначає їх для наступного
`git commit`.

</details>

<details>
<summary>14. Яким чином створюється новий коміт у Git?</summary>

#### GIT

1. Спочатку додати зміни у staging area:

```bash
git add .
```

2. Потім створити коміт:

```bash
git commit -m "Опис змін"
```

- Ключ -m додає повідомлення коміту.

- Якщо його не вказати — відкриється редактор для введення повідомлення.

- Коміт зберігає знімок (snapshot) поточного стану індексу в історії
репозиторію.

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

</details>

<details>
<summary>15. Які дані зберігає об’єкт коміту в Git?</summary>

#### GIT

- Об’єкт коміту містить:

- Хеш (SHA-1/SHA-256) — унікальний ідентифікатор.

- Посилання на tree-об’єкт (структура файлів і папок на момент коміту).

- Посилання на parent-коміти (зв’язок в історії, може бути кілька у merge).

- Автор (ім’я, email, час створення).

- Комітер (той, хто зафіксував, може відрізнятися від автора).

- Commit message (опис змін).

Таким чином Git зберігає не файли, а знімки стану + метадані, що дозволяє легко
відновлювати і порівнювати історію.

</details>

<details>
<summary>16. Яка різниця між командами git push і git fetch?</summary>

#### GIT

- `git push` — відправляє локальні коміти у віддалений репозиторій (оновлює
remote-branch).

- `git fetch` — отримує нові дані з віддаленого репозиторію, але не зливає їх у
локальну гілку (оновлює тільки refs/remotes).

#### Тобто:

- `push` = викласти свої зміни.

- `fetch` = завантажити чужі зміни для перегляду/злиття.

</details>

<details>
<summary>17. Яке призначення команди git pull?</summary>

#### GIT

- `git pull` = `git fetch` + `git merge` (або `rebase`, якщо вказано опцію).

- Вона завантажує останні зміни з віддаленого репозиторію і одразу інтегрує їх у
поточну гілку.

- Використовується для синхронізації локальної гілки з remote.

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

```bash
git pull origin main
```

- Отримає оновлення з origin/main і зіллє їх у вашу локальну main.

Якщо потрібен лише перегляд змін без злиття — краще використовувати git fetch.

</details>

<details>
<summary>18. Яке призначення та варіанти використання команди git branch?</summary>

#### GIT

- `git branch` керує гілками в репозиторії. Основні сценарії:

1. Перегляд усіх гілок:

```bash
git branch
```

2. Створення нової гілки:

```bash
git branch feature/login
```

3. Видалення гілки (локально):

```bash
git branch -d feature/login # безпечне (якщо змерджено) git branch -D
feature/login # примусове
```

4. Перейменування гілки:

```bash
git branch -m old-name new-name
```

5. Перегляд віддалених гілок:

```bash
git branch -r
```

Важливо: `git branch` не перемикає гілки, а тільки створює/керує. Для
перемикання використовується `git checkout` або `git switch`.

</details>

<details>
<summary>19. Як використовувати git checkout для перемикання між гілками?</summary>

#### GIT

- Команда `git checkout <branch>` змінює поточну гілку на вказану, оновлюючи
робочий каталог до стану цієї гілки.

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

```bash
git checkout feature/login
```

- Тепер HEAD вказує на feature/login, і всі файли відображають її стан.

**Створення нової гілки та одночасне перемикання:**

```bash
git checkout -b feature/signup
```

- Перевага: швидко працювати з різними гілками без втрати змін (якщо вони
закомічені або у стейджі).

В сучасних workflow рекомендують `git switch` для перемикання гілок
(`git switch feature/login`) — більш інтуїтивно.

</details>

<details>
<summary>20. Для чого використовується команда git merge?</summary>

#### GIT

- `git merge <branch>` об’єднує зміни з іншої гілки у поточну.

- Застосовується для інтеграції роботи над фічами або виправленнями в основну
гілку (main/develop).

#### Типи злиття:

- `Fast-forward` — просто переміщує вказівник гілки, якщо історія лінійна.

- `Three-way merge` — створює новий коміт злиття, якщо гілки розходяться.

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

```bash
git checkout main git merge feature/login
```

- Після цього всі зміни з feature/login будуть в main.

Merge дозволяє безпечно інтегрувати паралельні гілки без втрати історії.

</details>

<details>
<summary>21. ???</summary>

#### GIT

Expand Down