Files
SecondBrain/90 Library/DevOps/Git.md
T
2026-05-31 10:18:48 +03:00

86 lines
4.5 KiB
Markdown

---
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 - основы]]