---
status: seed
type: concept
tags:
  - devops
  - git
  - vcs
created: 2025-12-17
updated: 2026-05-07
title: 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 - основы]]
