Главная страница / Блог / Вопросы на собеседование / Вопросы на собеседование Git

Вопросы на собеседование Git

Список этих вопросов поможет вам подготовиться к собеседованию по 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. Говоря кратко, работая по этой модели в репозитории должны быть две постоянные ветки (masterdevelop) и любое количество временных веток (feature- release-hotfix-) которые вливаются в основные. Порядок подготовки релизов от начала разработки и непосредственно к осуществлению релиза четко диктуется моделью. Подробнее можно почитать по ссылке.

Подробнее тут:

13) Каким образом можно установить было ли слияние ветки в master?

Посмотреть ответ

Команда git branch —merged отфильтровывает ветки, которые были слиты.

Подробнее тут:

14) Что такое git-rebase и для чего он нужен?

Посмотреть ответ

Команда git rebase (перебазирование) — применяет коммиты текущей ветки после коммитов ветки, указанной в команде rebase. С помощью rebase можно выполнять целый ряд задач: слияние веток, перемотку (fast forwarding), изменение коммитов текущей ветки (редактирование, именование, удаление, слияние, перетасовка коммитов), пересадку текущей ветки (с помощью опции —onto) и др.

Подробнее тут:

Russian
Прокрутить вверх