Forráskód Böngészése

Добавить 'Лекции/Git/Git_Мирчук/Что такое Git.md'

u20-24mahotkina 1 hete
szülő
commit
0ec73fc568

+ 49 - 0
Лекции/Git/Git_Мирчук/Что такое Git.md

@@ -0,0 +1,49 @@
+# Что такое Git
+**Git** — распределенная система контроля версий, созданная Линусом Торвальдсом в 2005 году для разработки ядра Linux. За прошедшие годы Git эволюционировал из узкоспециализированного инструмента в универсальный стандарт управления кодом практически для любого проекта — от простых личных экспериментов до крупнейших корпоративных систем.
+
+В отличие от централизованных систем, таких как SVN, Git хранит полную копию репозитория на компьютере каждого разработчика. Это обеспечивает автономность работы и значительно ускоряет большинство операций, поскольку они выполняются локально.
+
+## В основе Git лежит несколько ключевых концепций:
+
+- **Репозиторий** — хранилище кода проекта со всей его историей изменений
+- **Коммит** — снимок состояния проекта в определенный момент времени
+- **Ветка** — независимая линия разработки, позволяющая изолировать изменения
+- **Индекс** — промежуточная область для подготовки коммита
+- **HEAD** — указатель на текущий коммит, с которым вы работаете
+
+Git отслеживает изменения на уровне содержимого файлов, а не только имен, что позволяет эффективно обрабатывать переименования и перемещения. Система использует хеширование SHA-1 для идентификации каждого объекта, обеспечивая целостность данных и защиту от случайных изменений.
+
+![p1.png](p1.png)
+
+## Распределенная разработка: преимущества Git для команд 
+
+Распределенная природа Git кардинально меняет подход к совместной работе над кодом. В отличие от централизованных систем, где существует единая точка истины, Git предоставляет каждому разработчику полную копию репозитория. Этот фундаментальный принцип открывает множество возможностей для командной работы. 👥
+
+### Ключевые преимущества Git для команд разработчиков:
+- **Параллельная работа** — каждый разработчик работает в собственной копии репозитория, не блокируя файлы для других
+- **Автономность** — возможность работать без постоянного соединения с сервером
+- **Резервирование** — каждая локальная копия служит резервной копией всего репозитория
+- **Гибкие рабочие процессы** — поддержка различных моделей разработки: централизованной, интеграционной, диктаторской
+- **Масштабируемость** — одинаково эффективен для команд из 2 и 2000 человек
+
+В крупных проектах Git позволяет организовать иерархические структуры интеграции кода. Разработчики могут обмениваться изменениями напрямую между собой, формируя подгруппы по функциональным областям, а затем интегрировать эти изменения в общий репозиторий. 
+
+![p2.png](p2.png)
+
+### Для эффективной командной работы с Git важно установить четкие процессы и правила:
+
+- **Соглашения об именовании веток** — например, feature/user-authentication, bugfix/login-error
+- **Стандарты сообщений коммитов** — структурированные сообщения по типу: fix: resolve user authentication timeout
+- **Процесс проверки кода** — обязательные ревью через pull/merge requests перед слиянием
+- **Политика защиты веток** — ограничение прямых коммитов в основные ветки
+- **Автоматизация** — интеграция с CI/CD, автоматические тесты, линтеры
+
+### Современные платформы для хостинга Git-репозиториев, такие как GitHub, GitLab и Bitbucket, предоставляют дополнительные инструменты для командной работы:
+
+- **Pull/Merge Requests** — формализованный процесс проверки и интеграции изменений
+- **Code Review** — инструменты для комментирования кода и обсуждения изменений
+- **Issue Tracking** — отслеживание задач и ошибок, интегрированное с репозиторием
+- **Webhooks и API** — возможность интеграции с внешними сервисами и автоматизации процессов
+- **Wiki и документация** — хранение документации проекта рядом с кодом
+
+Распределенная природа Git также обеспечивает отказоустойчивость процесса разработки. Даже при полном отказе центрального сервера команда может продолжать работу и обмениваться изменениями напрямую, что особенно ценно для географически распределенных команд и в условиях нестабильного соединения.