Список цих питань допоможе вам підготуватися до співбесіди з Git. На цій сторінці ви знайдете список питань з короткими відповідями та посиланнями на матеріали для більш глибокого вивчення. Перевірте свої знання про систему контролю версій Git, включаючи основні команди, розгалуження, злиття та вирішення конфліктів, щоб успішно пройти інтерв'ю та бути готовим до роботи з Git у реальному проекті.
Нижче наведено питання по темі GIT (джерело), які часто задають на співбесіді. Прочитавши питання, постарайтеся відповісти на нього так, як ви це зробили б під час свого інтерв'ю. Під питанням ви знайдете відповідь та посилання на джерела, які розкривають тему докладніше.
1) Як можна скасувати коміт у GIT, якщо його вже було опубліковано?
Переглянути відповідь
Як варіант, зробивши зворотний коміт за допомогою команди git revert [commit SHA]. Це створить коміт, що скасовує зміни зазначеного коміту. Після цього необхідно відправити зміни у віддалений репозиторій за допомогою команди git push [repository]/branch-name. Якщо коміт зроблено на особистій гілці, яка не використовується ніким крім автора, помилковий коміт можна відзначити прапором drop в інтерактивному режимі ребейза (git rebase -i), що повністю видалить зазначений коміт з історії Після цього необхідно відправити зміни у віддалений репозиторій за допомогою команди git push [repository]/branch-name
з прапором force.
Докладніше тут:
2) У чому полягає різниця між git pull та git fetch?
Переглянути відповідь
Git pull витягує (fetch) дані з сервера та автоматично робить злиття (Merge) їх із кодом поточної гілки. Git fetch — зв'язується з віддаленим репозиторієм та отримує дані, які відсутні у локальному. Під час виконання цієї команди злиття не відбувається.
Докладніше тут:
3) Що таке “staging area” чи “index” у GIT?
Переглянути відповідь
Staging area(область підготовлених файлів) — файл, який зазвичай розташовується в Git-директорії та містить інформацію про зміни, які потраплять до наступного коміту.
Докладніше тут:
4) За що відповідає команда "git stash"?
Переглянути відповідь
Git stash — команда, що зберігає змінений стан робочої директорії або окремого файлу у сховищі незавершених змін. Це дає можливість будь-якої миті застосувати їх знову. Наприклад, якщо потрібно перейти між гілками без фіксації змін, можна застосувати команду git stash, робоча директорія залишиться без змін, дані будуть збережені у спеціальному сховищі. Для перегляду прихованих змін потрібно виконати команду git stash list, а для застосування - git stash apply.
Докладніше тут:
5) Як знайти список файлів, які змінилися у певному коміті?
Переглянути відповідь
Це досягається переглядом історії коммітів за допомогою команди git log із застосуванням певних прапорів:
- stat під кожним із комітів з'явиться список та кількість змінених файлів, кількість рядків, доданих та видалених у кожному із файлів. Насамкінець, під списком, буде виведено сумарну статистику.
- name-status — показує список змінених, видалених файлів.
Для пошуку списку файлів у конкретному коміті можна виконати команду git show та вказати хеш коміта.
Докладніше тут:
6) Що відповідає команда “git config”?
Переглянути відповідь
Git config — команда, яка дозволяє переглядати та налаштовувати конфігурацію git репозиторію.
Докладніше тут:
7) З чого складається коміт у GIT?
Переглянути відповідь
Коміт - це однозв'язний список, який складається з об'єктів зі зміненими файлами та посилання на попередній коміт. Також вказуються імена автора, мітки часу та повідомлення коміта.
Докладніше тут:
8) Як створити GIT-репозиторій?
Переглянути відповідь
Створити Git-репозиторій можна двома шляхами. Перший – версіонування існуючого проекту. Для цього потрібно перейти в папку з проектом та виконати команду git initщо задасть структуру Git-репозиторія. Після базової конфігурації (git config) репозиторію можна буде версіонувати проект.
Другий: клонування віддаленого репозиторію. Для цього потрібно виконати команду:
git clone [url]
Де [url] - адреса репозиторію.
Докладніше тут:
9) Як поєднати кілька окремих комітів в один цільний коміт?
Переглянути відповідь
Це можна зробити за допомогою перебазування в інтерактивному режимі роботи (rebase). Наприклад, для того, щоб об'єднати, 3 останні коміти в один, необхідно виконати команду git rebase -i HEAD~3 (3 відповідає числу комітів, які потрібно об'єднати, відлік від HEAD). Відкриється вікно редактора, в якому перші 3 рядки відповідають останнім трьом комітам:
pick ab37583 Added feature 1.
pick 3ab2b83 Added feature 2.
pick 3ab5683 Added feature 3
На початку кожного рядка стоїть слово pick. Потрібно змінити його на squash або s, зберегти зміни, закрити редактор, після чого git попросить задати повідомлення нового коміту, що містить зміни трьох вихідних.
Докладніше тут:
10) За що відповідає команда "git bisect"? Як її можна використовувати визначення джерела бага (регресії)?
Переглянути відповідь
Команда Git bisect виконує бінарний пошук в історії комітів. Якщо невідомо, де знаходиться проблема і було зроблено багато комітів, можна скористатися командою git bisect, щоб визначити коміт, який викликав проблему Для цього потрібно виконати команду: git bisect start, потім git bisect bad — це вкаже Git коміт, у якому було виявлено проблему. Команда git bisect good [хеш коміта] вкаже Git коміт у якому проблема не проявляється. Далі Git з'ясує кількість проміжних комітів та за допомогою бінарного пошуку, пересуваючи покажчик на деякі з проміжних комітів, допоможе знайти проблемний.
Докладніше тут:
11) Як налаштувати GIT-репозиторій для запуску інструментів перевірки працездатності коду безпосередньо перед створенням комітів та запобігання їх у разі збою тесту?
Переглянути відповідь
Переглянути відповідь
За допомогою хука pre-commit. Для цього потрібно визначити у конфігураційному файлі pre-commit (в папці .git/hooks), код перевірки працездатності внесених змін. Після цього, Git запускатиме вказану перевірку перед кожним комітом. Якщо перевірка поверне код відмінний від нуля, коміт не буде створений.
Докладніше тут:
12) Які ви знаєте моделі розгалуження у GIT? Опишіть їх.
Переглянути відповідь
Переглянути відповідь
Однією з найпопулярніших моделей розгалуження Git є git flow. Говорячи коротко, працюючи за цією моделлю в репозиторії повинні бути дві постійні гілки (master, develop) та будь-яка кількість тимчасових гілок (feature- , release-, hotfix-) які вливаються в основні. Порядок підготовки релізів від початку розробки та безпосередньо до здійснення релізу чітко диктується моделлю. Докладніше можна почитати за посиланням.
Докладніше тут:
13) Як можна встановити чи було злиття гілки в master?
Переглянути відповідь
Команда git branch --merged фільтрує гілки, які були злиті.
Докладніше тут:
14) Що таке git-rebase і для чого він потрібний?
Переглянути відповідь
Команда git rebase (перебазування) — застосовує коміти поточної гілки після комітів гілки, вказаної у команді rebase. За допомогою rebase можна виконувати цілу низку завдань: злиття гілок, перемотування (Fast forwarding), зміна комітів поточної гілки (редагування, найменування, видалення, злиття, перетасовування комітів), пересадку поточної гілки (за допомогою опції -onto) та ін.
Докладніше тут: