Предисловие#

Назначение#

Руководство по изучению и практическому применению системы управления версиями Git.
Цель — сформировать у читателя систематизированное понимание принципов работы Git: от базовых концепций до организационных аспектов командной разработки и внутренней логики системы.

Аудитория#

Руководство предназначено для:

  • системных и прикладных разработчиков;

  • внешних партнёров и заказчиков;

  • технических специалистов (дизайнеров, технических писателей).

Содержание#

Руководство включает:

  • объяснение ключевых концепций и терминологии систем управления версиями (VCS);

  • практические примеры команд с пояснением параметров и флагов;

  • рекомендации по организации процесса разработки;

  • ответы на часто задаваемые вопросы новичков;

  • описание типовых проблем и алгоритмы их решения.

Руководство разделено на две части:

  1. Базовый курс. Для разработчиков без предварительных знаний о системах контроля версий. Материал рассчитан на углублённое изучение.

  2. Организационные аспекты и правила работы. Описание workflow, соглашений и корпоративных стандартов для работы с репозиториями. Обязательно к применению сотрудниками ООО «Бизнес Технологии»; рекомендовано внешним партнёрам и контрибьюторам.

Предварительные требования#

Обязательно установите систему управления версиями Git.
Актуальные дистрибутивы для всех поддерживаемых ОС доступны на официальном сайте.

Дополнительные инструменты (рекомендуемые):

Совет

Часть перечисленных инструментов имеет встроенные аналоги в операционных системах, поддерживаемых корпоративным стандартом GlobalERP (например, Блокнот в Windows или nano в UNIX-подобных системах).
Их использование не обязательно, но рекомендуется: это упрощает, ускоряет и делает нагляднее взаимодействие с Git.

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

Перечень рекомендуемого ПО:

  • GitExtensions — кроссплатформенный графический интерфейс с открытым исходным кодом для управления репозиториями Git; визуализирует историю изменений и упрощает сложные операции;

  • GitToolBox (плагин для IDEA или Giga IDE) — расширяет функциональность Git непосредственно в интерфейсе IDE: отображает имя текущей ветки, статус файлов в реальном времени и другое;

  • VS Code — современный кроссплатформенный редактор кода с мощной встроенной поддержкой Git; позволяет выполнять большинство операций через интуитивный графический интерфейс, минимизируя взаимодействие с консольными редакторами, такими как Vim;

  • LazyGit — консольная TUI-утилита для работы с Git; сочетает мощь командной строки и удобство визуального интерфейса прямо в терминале.

Git#

Git — современная, высокопроизводительная, распределённая система управления версиями (VCS).
Она отслеживает изменения в файлах и управляет ими. Применяется не только для исходного кода, но и для любых текстовых файлов: документации, конфигураций и т.д.

Git сохраняет «снимки» состояния проекта на разных этапах. Вы можете:

  • вернуться к любому снимку;

  • сравнить изменения между ними;

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

Основные определения#

  • Система управления версиями (VCS): отслеживает изменения в файлах проекта (кода, документации, конфигураций и других артефактов); позволяет восстановить любую версию, сравнить изменения, определить автора и причину правок;

  • Распределённая система: в отличие от централизованных систем (например, SVN), где история хранится на одном сервере, в Git каждый участник имеет полную локальную копию репозитория; это обеспечивает высокую скорость операций, отказоустойчивость и гибкость рабочих процессов, так как разработчики могут обмениваться изменениями напрямую.

Ключевые особенности#

  • Полное хранение истории: Git сохраняет снимки состояния проекта, а не разницу между файлами; это создаёт неизменяемую хронологию всех изменений;

  • Поддержка параллельной разработки через ветвление и слияние:

    • ветвление — изолированные линии разработки для новой функциональности, исправлений или экспериментов, не затрагивающие основную ветку (main или master);

    • слияние — механизм интеграции завершённой функциональности из одной ветки в другую;

  • Распределённая архитектура: каждый разработчик работает с полной локальной копией репозитория; это позволяет создавать коммиты, переключаться между ветками и просматривать историю без сетевого подключения; синхронизация с удалёнными репозиториями (например, на GitLab) выполняется отдельными командами (git fetch, git push и т.д.);

  • Целостность данных: все объекты в Git (коммиты, файлы, теги) идентифицируются по криптографическому хешу (SHA-1), вычисленному от их содержимого; любая попытка изменить историю нарушает хеши и становится заметной.

Взаимодействие с Git#

Руководство фокусируется на работе через CLI (командную строку), так как это:

  • даёт полное понимание внутренних механизмов Git;

  • обеспечивает универсальность навыков между операционными системами (Windows, macOS, GNU/Linux);

  • предоставляет доступ ко всем функциям, включая низкоуровневые команды, недоступные в GUI.

Для обучения некоторые операции демонстрируются через GUI, например VS Code. Большинство команд также доступны в популярных IDE:

  • JetBrains IntelliJ IDEA (Giga IDE);

  • Microsoft Visual Studio Code (VS Code);

  • другие аналогичные среды.

Глоссарий (ключевые термины и концепции)#

Для изучения материала необходимо понимание следующих терминов:

  • Репозиторий (Repository): хранилище проекта со всей историей изменений и служебной информацией; физически представлен папкой .git в корне проекта;

  • Коммит (Commit): атомарная единица истории — неизменяемый снимок состояния всех файлов на момент сохранения; содержит:

    • уникальный идентификатор (SHA-1 хеш);

    • ссылку на родительский коммит(ы);

    • автора;

    • дату создания;

    • сообщение (commit message), описывающее изменения;

  • Тег (Tag): статическая именованная ссылка на конкретный коммит; используется для маркировки релизов (например, v1.0.0.0, v2.7.14.127);

  • Ветка (Branch): подвижная именованная ссылка на коммит; при создании нового коммита в ветке она автоматически перемещается на него; ветки изолируют потоки разработки; стандартное название основной ветки — main.