В этой статье мы собрали наиболее часто встречающиеся вопросы на собеседовании по Git для специалистов в области QA.
БОЛЬШЕ ВОПРОСОВ С СОБЕСЕДОВАНИЙ В НАШЕМ ТЕЛЕГРАМ КАНАЛЕ QASOBES
Что такое Git и GitHub?
Git – это система контроля версий, которая помогает управлять изменениями в исходном коде, а GitHub – это платформа, построенная на основе Git, которая предоставляет дополнительные возможности и инструменты для упрощения совместной работы и управления проектами. Существуют и другие сервисы хостинга Git, такие как BitBucket, AWS CodeCommit и Azure Repos.
Что такое локальный и удаленный репозитории в Git?
- Git-репозиторий – это проект, файлы которого отслеживаются системой контроля версий Git.
- Локальный репозиторий – это копия репозитория Git, находящаяся на вашей локальной машине. Когда вы клонируете репозиторий или создаете новый, вы работаете с локальным репозиторием. В локальных репозиториях скрыт каталог .git, который содержит всю информацию, связанную с Git, такую как история, ветви и конфигурации.
- Удаленный репозиторий – это хранилище, размещенное на сервере. Он служит центральной точкой, где несколько разработчиков могут совместно работать над проектом. К распространенным сервисам удаленного хостинга относятся GitHub, GitLab и Bitbucket. Разработчики могут вносить свои изменения в удаленный репозиторий или получать (pull) изменения, сделанные другими.
Опишите шаги по выгрузке новых изменений
- Я создаю новую ветку для своих изменений в локальном репозитории.
- Я вношу свои изменения в эту ветку.
- Я делаю git add, чтобы добавить изменения в стэйджинг (staging area).
- Я создаю коммит с помощью git commit.
- Я открываю пулл реквест (pull request) на слияние с основной веткой.
- После того, как код будет рассмотрен и одобрен, я объединю свою ветку с основной.
Что делает команда git status
?
Она используется для отображения текущего состояния вашего рабочего каталога и стэйджинга. Эта команда предоставляет информацию о ветке, изменениях, которые будут зафиксированы, изменениях, которые не были индексированы, и неотслеживаемых файлах.
Что делает команда git add
?
Она используется для добавления измененных файлов в стэйджинг (staging area).
Что делает команда git commit
?
Она используется для создания коммитов в Git. Коммит – это действие в системе контроля версий, которое фиксирует (сохраняет) изменения в коде.
Что делают команды git push
и git pull
?
git push
используется для внесения ваших изменений в удаленный репозиторий. В него вносятся только изменения на уровне коммитов.
git pull
используется для получения последних изменений из удаленного репозитория.
В чем разница между git pull
и git fetch
?
git fetch
используется для получения последних изменений из удаленного репозитория без их слияния с изменениями в вашем локальном репозитории.
git pull
используется для получения последних изменений из удаленного репозитория и их немедленного слияния. Это комбинация двух команд: git fetch > git merge
.
Как проверить, какие файлы вы изменили?
С помощью команды git status
.
Как посмотреть, что именно вы изменили в определенном файле?
С помощью команды git diff
.
Почему мы делаем git pull
, а затем git push
?
Чтобы убедиться, что у нас есть последняя версия нашего проекта. Git не разрешает выполнение команды git push
, если ваш локальный репозиторий не обновлён.
Как вы разрешаете конфликты в Git?
- Конфликты в Git возникают, когда изменения от разных инженеров находятся в одном файле и Git не может автоматически разрешить их. Если Git не может разрешить конфликт автоматически, он запишет оба изменения в файл, вызвавший конфликт, и попросит вас исправить его вручную.
- Чтобы разрешить конфликты необходимо:
- Найти и открыть файлы с конфликтами. Git помечает их <<<<<<, ===== и >>>>>
- Отредактировать конфликтующие секции в файле вручную, сохраняя нужные изменения и удаляя метки Git
- Пометить эти файлы как разрешенные с помощью команды
git add
- Затем сделать коммит изменений для завершения слияния.
Что такое ветка в репозитории Git?
Ветка представляет собой независимую линию разработки в репозитории Git. Создавая ветку, вы, по сути, создаете новую временную шкалу, в которую можно вносить изменения, не затрагивая основную или другие ветки. Ветки в Git полезны для организации и изоляции усилий по разработке.
Какие различные стратегии ветвления вы знаете?
Централизованный рабочий процесс (Centralized Workflow). Веткой разработки по умолчанию является main, и все изменения фиксируются в этой ветке. Этот рабочий процесс не требует других веток, кроме главной.
Рабочий процесс разветвления функций (Feature Branching Workflow). Основная идея рабочего процесса разветвления функций заключается в том, что разработка всех функций должна вестись в специальной ветке, а не в основной.
Рабочий процесс Gitflow. Gitflow определяет строгую модель ветвления, разработанную вокруг релиза проекта. Это обеспечивает надежную основу для управления большими проектами. Она назначает очень специфические роли различным веткам и определяет, как и когда они должны взаимодействовать. В дополнение к функциональным веткам используются отдельные ветки для подготовки, поддержки и записи релизов.
Рабочий процесс Forking. Forking Workflow принципиально отличается от других популярных рабочих процессов Git. Вместо того чтобы использовать единый серверный репозиторий в качестве “центральной” кодовой базы, он предоставляет каждому разработчику свой серверный репозиторий. Это означает, что каждый участник имеет не один, а два Git-репозитория: частный локальный и публичный серверный. Чаще всего Forking Workflow встречается в публичных проектах с открытым исходным кодом.
Прочтите https://www.atlassian.com/git/tutorials статьи для получения более подробной информации.
Что делает файл .gitignore?
Используется в Git-репозитории для указания намеренно не отслеживаемых файлов и каталогов, которые Git должен игнорировать. Обычно это файлы, которые не нуждаются в контроле версий, например, временные файлы, артефакты сборки или файлы конфигурации, специфичные для пользователя.
Перевод статьи «Top Git Interview Questions for SDET».