1
0
Просмотр исходного кода

Загрузить файлы 'Лекции/Git'

u20kovalev_den 2 недель назад
Родитель
Сommit
6042846624

BIN
Лекции/Git/git1.png


BIN
Лекции/Git/git2.png


+ 28 - 0
Лекции/Git/Шайдуко_Git.md

@@ -0,0 +1,28 @@
+# Git как распределённая система контроля версий
+
+**Git — это распределённая система контроля версий**, предназначенная для отслеживания изменений в исходном коде и координации работы нескольких разработчиков. В отличие от централизованных систем, Git хранит полную историю проекта локально у каждого участника, что обеспечивает отказоустойчивость, высокую скорость операций и гибкость в управлении ветками.
+
+С инженерной точки зрения Git оперирует не файлами, а **снимками состояния репозитория**. Каждый коммит фиксирует состояние всего проекта в конкретный момент времени и содержит ссылку на предыдущие коммиты, формируя направленный ациклический граф. Такой подход позволяет эффективно выполнять операции слияния, отката и анализа истории изменений.
+
+![Alt](git1.png)
+
+Одной из ключевых концепций 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.
+
+![Alt](git2.png)
+
+Таким образом, **Git является не просто инструментом хранения кода**, а полноценной системой управления изменениями, критически важной для масштабируемой и предсказуемой разработки программного обеспечения.

+ 21 - 0
Лекции/Git/Шайдуко_Вопросы.md

@@ -0,0 +1,21 @@
+# Вопросы и ответы
+
+Почему Git относится к распределённым системам контроля версий?
+
+Git является распределённой системой, поскольку каждый разработчик имеет полную копию репозитория и его истории.
+
+Что представляет собой коммит в Git?
+
+Коммит — это зафиксированный снимок состояния всего проекта с ссылкой на предыдущие изменения.
+
+Зачем используются ветки в Git?
+
+Ветки позволяют изолировать разработку отдельных задач без влияния на основную кодовую базу.
+
+В чём разница между merge и rebase?
+
+Merge сохраняет историю ветвления, а rebase переписывает её, последовательно применяя коммиты.
+
+Какую роль играет staging area в Git?
+
+Staging area используется для точного контроля набора изменений, включаемых в следующий коммит.