86 lines
4.5 KiB
Markdown
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 - основы]]
|