|
|
@@ -0,0 +1,28 @@
|
|
|
+# Git как распределённая система контроля версий
|
|
|
+
|
|
|
+**Git — это распределённая система контроля версий**, предназначенная для отслеживания изменений в исходном коде и координации работы нескольких разработчиков. В отличие от централизованных систем, Git хранит полную историю проекта локально у каждого участника, что обеспечивает отказоустойчивость, высокую скорость операций и гибкость в управлении ветками.
|
|
|
+
|
|
|
+С инженерной точки зрения Git оперирует не файлами, а **снимками состояния репозитория**. Каждый коммит фиксирует состояние всего проекта в конкретный момент времени и содержит ссылку на предыдущие коммиты, формируя направленный ациклический граф. Такой подход позволяет эффективно выполнять операции слияния, отката и анализа истории изменений.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Одной из ключевых концепций Git является **ветвление (branching)**. Ветка представляет собой подвижный указатель на определённый коммит и позволяет изолировать разработку новых функций, исправлений или экспериментов от основной кодовой базы. Операция создания ветки в Git практически мгновенна, что стимулирует активное использование feature-branch-подхода в командной разработке.
|
|
|
+
|
|
|
+Процесс интеграции изменений осуществляется через **слияние (merge)** или **перебазирование (rebase)**. Merge сохраняет историю ветвления, создавая дополнительный коммит, тогда как rebase переписывает историю, последовательно накладывая коммиты поверх целевой ветки. Выбор стратегии зависит от требований к читаемости истории и политики проекта.
|
|
|
+
|
|
|
+## Таблица 1. Основные объекты Git
|
|
|
+
|
|
|
+| Объект | Назначение | Практическая роль |
|
|
|
+| ------ | -------------------------- | ----------------------- |
|
|
|
+| Blob | Хранение содержимого файла | Фиксация данных |
|
|
|
+| Tree | Структура каталогов | Организация файлов |
|
|
|
+| Commit | Снимок состояния проекта | История изменений |
|
|
|
+| Branch | Указатель на коммит | Параллельная разработка |
|
|
|
+
|
|
|
+Важным элементом рабочего процесса является **индекс (staging area)** — промежуточная область между рабочей директорией и репозиторием. Он позволяет точно контролировать, какие изменения попадут в следующий коммит, что особенно важно при логическом разделении правок.
|
|
|
+
|
|
|
+Git активно используется в сочетании с удалёнными репозиториями (GitHub, GitLab, Bitbucket), где реализуются процессы **code review**, автоматического тестирования и CI/CD. Команды `fetch`, `pull` и `push` обеспечивают синхронизацию локальной истории с удалённой, при этом Git строго контролирует целостность данных с помощью хешей SHA-1 или SHA-256.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Таким образом, **Git является не просто инструментом хранения кода**, а полноценной системой управления изменениями, критически важной для масштабируемой и предсказуемой разработки программного обеспечения.
|