--- status: seed type: concept tags: - devops - git - vcs created: 2025-12-17 updated: 2026-05-07 aliases: - Git --- # Git **Git** — распределённая система контроля версий, разработанная Линусом Торвальдсом в 2005 году. Git используется для управления историей изменений исходного кода, командной разработки и организации процессов доставки ПО. В [[DevOps - основы]] Git относится к базовым инструментам контроля версий. ## Зачем нужен Git - хранит историю изменений проекта; - позволяет работать с ветками и объединять изменения; - поддерживает распределённую модель разработки; - помогает проводить code review и восстановление предыдущих состояний кода; - интегрируется с платформами вроде [[Gitlab]] и CI/CD. ## Преимущества ### Производительность Git оптимизирован для локальных операций: большинство действий выполняется без обращения к удалённому серверу. История проекта хранится как набор объектов, связанных с содержимым файлов и метаданными версий. ### Безопасность Git использует хеширование объектов, что помогает контролировать целостность истории изменений. Это защищает проект от незаметной подмены данных в истории. ### Гибкость Git поддерживает разные модели разработки: от простой работы в одной ветке до сложных процессов с релизными, функциональными и hotfix-ветками. ## Базовые сущности - **commit** — зафиксированное состояние изменений; - **branch** — ветка разработки; - **merge** — объединение веток; - **diff** — сравнение изменений между состояниями проекта. Практические команды вынесены в заметку [[Основные команды git]]. ## GitFlow **GitFlow** — модель ветвления, где используются основные ветки и временные ветки для разработки функциональности. Основные ветки: - `main` — официальная история релизов; - `release` — подготовка готового функционала к выпуску; - `develop` — основная ветка разработки; - `feature` — разработка отдельной функциональности. Когда в `develop` накоплен достаточный объём изменений, создаётся `release`-ветка. После тестирования она сливается в `main` и обратно в `develop`. ![[Pasted image 20260430152221.png|597]] Недостатки GitFlow: - не всегда хорошо сочетается с CI/CD; - избыточен для проектов с частыми релизами; - может усложнять историю слияний. ## Trunk Based Development **Trunk Based Development (TBD)** — модель разработки, где основная работа ведётся вокруг одной главной ветки, называемой `trunk`. Идея TBD: чаще интегрировать изменения в основную ветку, уменьшать долгоживущие ветки и поддерживать возможность выпуска релиза в любой момент. ![[Pasted image 20260430153712.png]] TBD лучше сочетается с CI/CD-процессами, потому что уменьшает риск крупных конфликтов слияния и ускоряет обратную связь от сборок и тестов. ## Связанные заметки - [[Основные команды git]] - [[Gitlab]] - [[DevOps - основы]]