From 875eab32f6f24bbb1724e18fb91d73317348ceea Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 15:43:41 +0300 Subject: [PATCH 01/10] Docs(MD): Added interview questions and answers --- README.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f537863..f2990a7 100644 --- a/README.md +++ b/README.md @@ -579,7 +579,111 @@ Merge дозволяє безпечно інтегрувати паралель
-21. ??? +21. Який Git workflow ви зазвичай використовуєте в роботі? + +#### GIT + +- Найчастіше використовую Git Flow / Feature Branch Workflow: + + - `main` — завжди стабільна продакшн-версія. + + - `develop` — інтеграційна гілка для нових фіч. + + - для задач створюю окрему `feature`. + + - після завершення — `pull request` → `code review` → `merge у develop`. + + - перед релізом створюється `release`, після тестів — `merge у main` + тег. + + - багфікси йдуть у `hotfix` від main. + +Цей процес дисциплінує, дає прозорість і контроль над релізами. + +
+ +
+22. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+23. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+24. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+25. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+26. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+27. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+28. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+29. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+30. ??? + +#### GIT + +- Coming Soon... 😎 + +
+ +
+31. ??? #### GIT From e7572c819971f8af1d818371e8459e1cf8d38759 Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 15:51:42 +0300 Subject: [PATCH 02/10] Docs(MD): Added interview questions and answers --- README.md | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f2990a7..183b6af 100644 --- a/README.md +++ b/README.md @@ -602,11 +602,41 @@ Merge дозволяє безпечно інтегрувати паралель
-22. ??? +22. Опишіть кроки створення нової гілки та її злиття в main. #### GIT -- Coming Soon... 😎 +1. Переконуюсь, що локальний main оновлений: + +```bash +git checkout main +git pull origin main +``` + +2. Створюю нову гілку від main: + +```bash +git checkout -b feature/my-task +``` + +3. Працюю, комічу зміни: + +```bash +git add . +git commit -m "Implement feature X" +``` + +4. Пушу гілку на remote: + +```bash +git push origin feature/my-task +``` + +5. Відкриваю Pull Request → проходить code review → CI. + +6. Мерджу в main (звичайно через squash або rebase, щоб історія була чистою). + +7. Видаляю feature-гілку локально і на remote.
From 4bc46508e6f307e54e384d722ec2a374c441dfd9 Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 15:54:14 +0300 Subject: [PATCH 03/10] Docs(MD): Added interview questions and answers --- README.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 183b6af..2bad2e9 100644 --- a/README.md +++ b/README.md @@ -641,11 +641,32 @@ git push origin feature/my-task
-23. ??? +23. Що таке merge conflict у Git і як його вирішують? #### GIT -- Coming Soon... 😎 +- Merge conflict виникає, коли дві гілки змінюють один і той самий рядок коду + або файл у несумісний спосіб, і Git не може автоматично об’єднати зміни. + +#### Рішення: + +1. Виконати merge/rebase → Git покаже конфліктні файли. + +2. Відкрити файл, знайти маркери <<<<<<<, =======, >>>>>>>. + +3. Вибрати або об’єднати потрібні зміни вручну. + +4. Позначити файл як вирішений: + +```bash +git add +``` + +5. Завершити merge/rebase комітом: + +```bash +git commit +```
From 277e177fbcfdc6a5af1eb9d47dabc4daefba9a5c Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 15:55:49 +0300 Subject: [PATCH 04/10] Docs(MD): Added interview questions and answers --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2bad2e9..2da4550 100644 --- a/README.md +++ b/README.md @@ -671,11 +671,22 @@ git commit
-24. ??? +24. Що таке fast-forward merge у Git? #### GIT -- Coming Soon... 😎 +- Fast-forward merge — це злиття, коли гілка-ціль (наприклад main) не має нових + комітів після відгалуження feature-гілки. Тоді Git просто пересуває вказівник + main на останній коміт feature-гілки без створення додаткового merge-коміту. + +#### Приклад: + +```bash +git checkout main +git merge feature/my-task --ff +``` + +Це "чисте" злиття без зайвих комітів.
From 9e561301877140d5eb9b99575c419821a0687855 Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 15:58:05 +0300 Subject: [PATCH 05/10] Docs(MD): Added interview questions and answers --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2da4550..7dd815a 100644 --- a/README.md +++ b/README.md @@ -691,11 +691,23 @@ git merge feature/my-task --ff
-25. ??? +25. Що таке three-way merge у Git? #### GIT -- Coming Soon... 😎 +- Three-way merge — це злиття, коли Git використовує три точки для об’єднання: + +1. `common ancestor` (базовий коміт, від якого розійшлися гілки), + +2. `HEAD` (останній коміт у цільовій гілці, наприклад main), + +3. `branch tip` (останній коміт у зливаній гілці, наприклад feature). + +Git порівнює зміни відносно спільного предка й створює новий merge-коміт, що має +двох батьків. + +Цей підхід застосовується, коли fast-forward неможливий (тобто в обох гілках є +нові коміти).
From 76401122a05a5159334d4e25a0d75a0879c2229f Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 16:01:55 +0300 Subject: [PATCH 06/10] Docs(MD): Added interview questions and answers --- README.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7dd815a..99e4f81 100644 --- a/README.md +++ b/README.md @@ -712,11 +712,35 @@ Git порівнює зміни відносно спільного предка
-26. ??? +26. Які кроки виконати, щоб перебазувати (rebase) гілку в Git? #### GIT -- Coming Soon... 😎 +1. Перейти в свою гілку: + +```bash +git checkout feature/my-task +``` + +2. Виконати rebase на актуальну main: + +```bash +git fetch origin git rebase origin/main +``` + +3. Якщо є конфлікти — вирішити їх, додати файли: + +```bash +git add git rebase --continue +``` + +4. Коли все готово — оновити remote (з форсом, бо історія переписана): + +```bash +git push origin feature/my-task --force +``` + +Rebase робить історію лінійною, на відміну від merge.
From 115feeff69cb467509407e1c04fe2112e866ea75 Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 16:04:11 +0300 Subject: [PATCH 07/10] Docs(MD): Added interview questions and answers --- README.md | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 99e4f81..33a76f0 100644 --- a/README.md +++ b/README.md @@ -745,11 +745,41 @@ Rebase робить історію лінійною, на відміну від
-27. ??? +27. Які плюси й мінуси rebase у порівнянні з merge? #### GIT -- Coming Soon... 😎 +✅ **Переваги rebase** + +- Лінійна, чиста історія без merge-комітів. + +- Зручніше читати git log, легше дебажити. + +- Кожен коміт виглядає так, ніби зроблений поверх останнього main. + +❌ **Недоліки rebase** + +- Переписує історію (особливо небезпечно для спільних гілок). + +- Потрібен --force push, що може зламати історію іншим. + +- Вимагає більшої дисципліни в команді. + +✅ **Переваги merge** + +- Зберігає повну історію розробки, без переписування. + +- Безпечний для командної роботи. + +- Простий у використанні. + +❌ **Недоліки merge** + +- Брудніший git log з великою кількістю merge-комітів. + +- Історію важче аналізувати. + +Загалом: merge — безпечніше для команд, rebase — краще для чистої історії.
From 4c4afa343a0721308c5b7a1951ad46e2ee3fbf42 Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 16:05:35 +0300 Subject: [PATCH 08/10] Docs(MD): Added interview questions and answers --- README.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 33a76f0..abac0e7 100644 --- a/README.md +++ b/README.md @@ -784,11 +784,29 @@ Rebase робить історію лінійною, на відміну від
-28. ??? +28. Для чого використовуються теги в Git? #### GIT -- Coming Soon... 😎 +- Теги в Git — це фіксовані маркери на певні коміти, зазвичай для позначення + релізів (v1.0, v2.1). + + - `Lightweight tag` — просто вказівка на коміт, без додаткової інформації. + + - `Annotated tag` — зберігає автора, дату, повідомлення і може бути підписаний + GPG. + +#### Теги зручні для: + +- Відстеження версій у продакшн. + +- Швидкого переходу на конкретний реліз: + +```bash +git checkout v1.0 +``` + +- CI/CD для автоматичного деплою.
From 1f110b463c6456efcabd8129bb77f640f742406f Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 16:10:29 +0300 Subject: [PATCH 09/10] Docs(MD): Added interview questions and answers --- README.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index abac0e7..fdc28a6 100644 --- a/README.md +++ b/README.md @@ -811,11 +811,28 @@ git checkout v1.0
-29. ??? +29. Як скасувати коміт, який вже запушено на remote? #### GIT -- Coming Soon... 😎 +1. Якщо потрібно повністю видалити коміт (історія переписується, небезпечно для + інших): + +```bash +git reset --hard <коміт_до_потрібного> +git push origin <гілка> --force +``` + +2. Якщо потрібно зберегти історію, створивши "відкат" без перепису: + +```bash +git revert +git push origin <гілка> +``` + +- `reset --hard` + `force push` змінює історію (небезпечно для спільних гілок). + +- `revert` створює новий коміт, що відміняє зміни — безпечніше для команд.
From 3221cb3dc1ec0329f7f13b549006cd1b4cf0f01b Mon Sep 17 00:00:00 2001 From: ViktorSvertoka Date: Wed, 25 Jun 2025 16:11:58 +0300 Subject: [PATCH 10/10] Docs(MD): Added interview questions and answers --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fdc28a6..d4ea752 100644 --- a/README.md +++ b/README.md @@ -837,11 +837,18 @@ git push origin <гілка>
-30. ??? +30. Яке призначення головної гілки (main/master) у Git? #### GIT -- Coming Soon... 😎 +Головна гілка (main або раніше master) — це стабільна, завжди робоча версія +проєкту, на яку орієнтуються всі інші гілки. + +- Від неї створюють feature-, release-, hotfix-гілки. + +- Вона слугує базою для релізів. + +- Зазвичай на ній запускається CI/CD і деплой в продакшн.