Предисловие#
Назначение#
Руководство по изучению и практическому применению системы управления версиями Git.
Цель — сформировать у читателя систематизированное понимание принципов работы Git: от базовых концепций до организационных аспектов командной разработки и внутренней логики системы.
Аудитория#
Руководство предназначено для:
системных и прикладных разработчиков;
внешних партнёров и заказчиков;
технических специалистов (дизайнеров, технических писателей).
Содержание#
Руководство включает:
объяснение ключевых концепций и терминологии систем управления версиями (
VCS);практические примеры команд с пояснением параметров и флагов;
рекомендации по организации процесса разработки;
ответы на часто задаваемые вопросы новичков;
описание типовых проблем и алгоритмы их решения.
Руководство разделено на две части:
Базовый курс. Для разработчиков без предварительных знаний о системах контроля версий. Материал рассчитан на углублённое изучение.
Организационные аспекты и правила работы. Описание
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.