8 питань

Питання на співбесіді з Git

Питання рівня Junior

  1. 1. Чим git commit відрізняється від git push?

    Відповідь

    git commit зберігає знімок проіндексованих змін у локальному репозиторії, нікуди не надсилаючи його. git push відправляє локальні коміти у віддалений репозиторій, наприклад на GitHub. Перед комітом зміни додають в індекс через git add. Тому можна зробити кілька комітів офлайн і запушити їх разом пізніше.

    Додаткове питання: Що робити, якщо git push відхилено, бо на remote є нові коміти?

    Розбір теми в курсі: Git: старт

  2. 2. Що таке гілка в Git і навіщо вона потрібна?

    Відповідь

    Гілка в Git це легкий рухомий вказівник на коміт, тому створити її майже нічого не коштує. Нові коміти зсувають вказівник поточної гілки вперед, а HEAD показує, на якій гілці ви зараз. Гілки дозволяють паралельно працювати над задачами, не ламаючи основну гілку. Створюють і перемикаються через git switch -c name або git checkout -b name.

    Додаткове питання: Що таке detached HEAD і як із нього вийти, не втративши коміти?

    Розбір теми в курсі: Git: старт

  3. 3. У чому різниця між git fetch і git pull?

    Відповідь

    git fetch завантажує нові коміти й гілки з remote і оновлює гілки на кшталт origin/main, але не чіпає ваші локальні гілки. git pull робить fetch, а потім одразу інтегрує зміни в поточну гілку через merge або rebase. fetch безпечний: можна спершу подивитися, що прийшло, і лише потім вирішити, як зливати.

    Додаткове питання: Що робить git pull --rebase і коли він кращий за звичайний pull?

    Розбір теми в курсі: Git: старт

  4. 4. Як виникає конфлікт злиття і як його розв'язати?

    Відповідь

    Конфлікт виникає, коли дві гілки по-різному змінили ті самі рядки файлу або одна змінила файл, а інша видалила. Git зупиняє злиття і позначає спірні місця маркерами <<<<<<<, ======= і >>>>>>>. Треба вручну залишити правильний варіант, прибрати маркери, додати файл через git add і завершити злиття комітом. Якщо щось пішло не так, git merge --abort повертає стан до злиття.

    Додаткове питання: Як зменшити кількість конфліктів у команді?

    Розбір теми в курсі: Git: старт

  5. 5. Навіщо потрібні git stash і файл .gitignore?

    Відповідь

    git stash тимчасово ховає незакомічені зміни і повертає чисту робочу копію, щоб, наприклад, перемкнутися на іншу гілку. Повернути їх можна через git stash pop або git stash apply. .gitignore перелічує шаблони файлів, які Git не повинен відстежувати: node_modules, збірки, .env з секретами. Він не діє на файли, які вже додані в репозиторій, їх треба прибрати через git rm --cached.

    Додаткове питання: Як закомітити порожню папку, якщо Git не відстежує порожні директорії?

    Розбір теми в курсі: Git: старт

Питання рівня Middle

  1. 1. Чим git merge відрізняється від git rebase? Коли що використовувати?

    Відповідь

    merge об'єднує історії гілок і створює merge-коміт, зберігаючи реальну історію без змін. rebase переносить ваші коміти поверх іншої гілки, створюючи нові коміти з іншими хешами, тому історія стає лінійною. Rebase зручний для оновлення власної гілки перед PR. Не можна робити rebase комітів, які вже опубліковані й використовуються іншими, бо це переписує спільну історію.

    Додаткове питання: Для чого використовують інтерактивний rebase?

    Розбір теми в курсі: Git: старт

  2. 2. Чим git reset відрізняється від git revert?

    Відповідь

    git reset переміщує вказівник гілки на інший коміт, фактично прибираючи наступні коміти з історії. Режими --soft, --mixed і --hard визначають, чи залишаться зміни в індексі, у робочій копії чи зникнуть зовсім. git revert створює новий коміт, який скасовує зміни вказаного коміту, і не переписує історію. Тому для вже запушених комітів у спільній гілці використовують revert.

    Додаткове питання: Як повернути коміти після помилкового git reset --hard?

    Розбір теми в курсі: Git: старт

  3. 3. Що робить git cherry-pick і коли він доречний?

    Відповідь

    git cherry-pick <hash> бере зміни конкретного коміту і застосовує їх поверх поточної гілки як новий коміт з іншим хешем. Його використовують, щоб перенести окремий фікс, наприклад з main у гілку релізу, не зливаючи всю гілку. Як і при злитті, можуть виникнути конфлікти. Часте використання створює дублікати комітів у різних гілках, тому це точковий інструмент.

    Додаткове питання: Як знайти коміт, який зламав функціональність, якщо відомо лише хорошу й погану версії?

    Розбір теми в курсі: Git: старт

Тренуй ці питання

Вчи картки, відповідай текстом або голосом і отримуй оцінку AI. Потрібен вхід в акаунт.

Відповідай уголос і отримуй оцінку

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

Застосунок незабаром з'явиться в магазинах.

Інші теми