---
title: Основные понятия · часть 2
seo:
  title: Основные понятия · часть 2 — QA
  description: Тема «Основные понятия · часть 2» для собеседования QA. Для чего используют системы контроля версий? Что такое Git? Каков принцип его работы?
---

[Все темы QA](/qa)

## <strong>Для чего используют системы контроля версий?</strong> [#q-14bee738d69b81dfadeed32f320a8e7d]

Системы контроля версий (Version Control Systems, <code>VCS</code>) используются для управления изменениями в документах, компьютерных программах, больших веб-сайтах и других коллекциях информации. Вот основные цели их использования&#58;

{/* prettier-ignore */}
1. <strong>Отслеживание изменений</strong>&#58;

    - Системы контроля версий позволяют отслеживать историю изменений в файлах и каталогах, включая то, кто и когда сделал изменения, а также детали этих изменений.

1. <strong>Совместная работа</strong>&#58;

    - Облегчают совместную работу множества разработчиков над общими проектами, предоставляя инструменты для синхронизации работы, предотвращения конфликтов и интеграции изменений от разных участников.

1. <strong>Возврат к предыдущим состояниям</strong>&#58;

    - Позволяют возвращаться к предыдущим версиям файлов или проектов целиком, что полезно для отката ошибочных изменений и восстановления утерянной информации.

1. <strong>Ветвление и слияние</strong>&#58;

    - Поддерживают создание отдельных "веток" для новых функций или экспериментов, позволяя разработчикам работать параллельно без влияния на основной или стабильный код. После завершения работы изменения могут быть "слияны" обратно в основную ветку.

1. <strong>Автоматизация и интеграция</strong>&#58;

    - Интегрируются с другими инструментами разработки, такими как системы сборки, системы непрерывной интеграции (CI) и системы непрерывной доставки (CD), что улучшает автоматизацию процессов разработки и обеспечения качества.

Примеры популярных систем контроля версий включают Git, Subversion (SVN), Mercurial и Perforce. Git в частности является одной из наиболее широко используемых систем, благодаря своей мощности, гибкости и поддержке распределенной работы.

:::note[Ссылки для изучения]

1. [Что такое Git и для чего он нужен](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/)
   :::

---

## <strong>Что такое Git? Каков принцип его работы?</strong> [#q-14bee738d69b81d3a387dc4d2e22be85]

<code>Git</code> — это распределённая система контроля версий, разработанная для
быстрой и эффективной работы с проектами любого размера, от маленьких до очень
крупных. Вот краткое описание принципа его работы&#58;

{/* prettier-ignore */}
1. <strong>Распределённая архитектура</strong>&#58;

    - В отличие от централизованных систем контроля версий, каждый пользователь Git работает с локальной копией репозитория, которая включает в себя всю историю изменений. Это позволяет работать с проектом даже без доступа к сети и обеспечивает высокую скорость работы.

1. <strong>Снимки состояний, а не различия</strong>&#58;

    - Git хранит информацию в виде снимков состояний файловой системы. При коммите Git сохраняет снимок всех файлов, которые были изменены. Если файлы не изменялись, Git создаёт ссылку на предыдущий снимок этого файла.

1. <strong>Эффективность и производительность</strong>&#58;

    - Git предназначен для обеспечения производительности и интегритета. Он поддерживает быстрое ветвление и слияние, а его операции с данными оптимизированы для эффективности.

1. <strong>Ветвление и слияние</strong>&#58;

    - Ветвление в Git происходит мгновенно, так как новая ветка в Git — это просто новый указатель на снимок. Слияние также является одной из ключевых функций, позволяя объединять изменения из разных веток.

1. <strong>Целостность данных</strong>&#58;

    - Git использует механизм хэширования SHA-1 для именования и идентификации объектов в репозитории, что обеспечивает целостность содержимого вашего кода.

1. <strong>Рабочий процесс</strong>&#58;

    - Типичный рабочий процесс в Git включает создание веток для разработки новых функций, совершение коммитов для сохранения изменений в этих ветках, слияние изменений в главную ветку и, при необходимости, отправка изменений в удалённый репозиторий.

<code>Git</code> широко используется как индивидуальными разработчиками, так и
большими командами, благодаря своей масштабируемости, гибкости и поддержке
множества рабочих процессов.

:::note[Ссылки для изучения]

1. [Что такое Git и для чего он нужен](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/)
   :::

---

## <strong>Что такое</strong> <code>commits</code><strong>,</strong> <code>branches</code> <strong>в Git?</strong> [#q-14bee738d69b81c7bc27c3bb47057157]

В Git, <code>commits</code> и <code>branches</code> являются основными концепциями, которые позволяют управлять изменениями в коде и организовать разработку. Вот краткое описание каждого из них&#58;

#### <code>Commits</code>

- Коммит ссылается на снимок всего отслеживаемого дерева проекта, а не только изменённых файлов. Он также хранит ссылки на родительские коммиты, автора, время и сообщение. Неизменённые объекты переиспользуются.

- <strong>Использование</strong>&#58; Commit создаётся в Git с помощью команды
  <code>git commit</code>. Это действие сохраняет ваши изменения в локальной
  базе данных Git, позволяя отслеживать историю разработки и возвращаться к
  предыдущим состояниям проекта при необходимости.

#### <code>Branches</code>

- <strong>Определение</strong>&#58; Ветка (branch) в Git — это независимая линия
  разработки, которая включает свои собственные коммиты. Основная ветка по
  умолчанию называется <code>master</code> или <code>main</code>. Ветки
  позволяют разработчикам работать над новыми функциями или исправлениями, не
  влияя на основной код проекта.

- <strong>Использование</strong>&#58; Ветки используются для разработки новых
  функций, исправления ошибок или проведения экспериментов в изолированной
  среде. Команды Git для работы с ветками включают <code>git branch</code> для
  создания или просмотра веток, <code>git checkout</code> для переключения между
  ветками и <code>git merge</code> для слияния изменений из одной ветки в
  другую.

Эти механизмы позволяют разработчикам управлять сложными проектами, изолировать изменения до их готовности к внедрению в основную кодовую базу и эффективно сотрудничать с другими разработчиками.

:::note[Ссылки для изучения]

1. [Что такое Git и для чего он нужен](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/)
   :::

---

## <strong>Для чего нужны GitHub, GitLab и другие, базирующиеся на Git, вебхостинги проектов?</strong> [#q-14bee738d69b816b8487da138a182fbb]

GitHub, GitLab, и другие веб-сервисы, базирующиеся на Git, предоставляют платформы для хостинга исходного кода проектов, используя систему контроля версий Git. Они обладают множеством функций, которые поддерживают как индивидуальную, так и коллективную разработку программного обеспечения. Вот основные причины их использования&#58;

{/* prettier-ignore */}
1. <strong>Централизованный хостинг репозиториев</strong>&#58;

    - Предоставляют удаленное, безопасное и централизованное место для хранения кода, доступное из любой точки мира.

1. <strong>Совместная работа</strong>&#58;

    - Упрощают совместную работу над проектами, позволяя разработчикам легко делиться кодом, следить за изменениями и вносить свои.

1. <strong>Отслеживание проблем (Issue Tracking)</strong>&#58;

    - Предоставляют инструменты для отслеживания ошибок, задач и запросов на улучшение функциональности, что помогает организовать работу над проектом.

1. <strong>Просмотр и управление изменениями (Pull Requests)</strong>&#58;

    - Возможность просматривать, обсуждать и управлять предлагаемыми изменениями в коде перед их интеграцией в основную ветку проекта.

1. <strong>Интеграция с инструментами DevOps</strong>&#58;

    - Интеграция с инструментами для непрерывной интеграции (CI) и непрерывной доставки (CD), что позволяет автоматизировать тестирование и развертывание приложений.

1. <strong>Управление доступом</strong>&#58;

    - Механизмы управления доступом позволяют контролировать, кто может просматривать или изменять проект, обеспечивая безопасность и конфиденциальность.

1. <strong>Документация и вики</strong>&#58;

    - Возможности для создания вики и хостинга документации проекта, что упрощает передачу знаний и управление документацией.

1. <strong>Статистика и аналитика</strong>&#58;

    - Предоставляют статистику использования и аналитику проекта, что помогает понимать активность и вовлеченность в проект.

Эти платформы являются центральными для современной разработки программного обеспечения, поддерживая открытые источники и коммерческие проекты одинаково.

:::note[Ссылки для изучения]

1. [Что такое Git и для чего он нужен](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/)
   :::
