# Что такое Git? Каков принцип его работы?

**Git** — это **распределённая система контроля версий (DVCS)**, которая позволяет отслеживать изменения в коде, управлять историей проекта и работать с ним как одному разработчику, так и команде.

***

#### **Основные характеристики Git**

1. **Распределённость**
   * Каждый разработчик имеет **полную копию репозитория** со всей историей, а не только текущие файлы.
2. **Коммиты (Commits)**
   * Фиксируют изменения и создают историю проекта.
3. **Ветки (Branches)**
   * Позволяют параллельно разрабатывать функции или исправления, не влияя на основной код.
4. **Слияния (Merge) и Rebase**
   * Объединение изменений из разных веток с сохранением истории.

***

#### **Принцип работы**

1. **Рабочая директория (Working Directory)**
   * Файлы, с которыми вы работаете прямо сейчас.
2. **Индекс (Staging Area / Stage)**
   * Промежуточная зона для подготовки изменений к коммиту.
   * Добавляется командой `git add`.
3. **Локальный репозиторий (Local Repository)**
   * Хранит все коммиты, ветки и историю изменений на вашем компьютере.
4. **Удалённый репозиторий (Remote Repository)**
   * Общий репозиторий в облаке (GitHub, GitLab), с которым синхронизируются изменения.

***

#### **Типичный рабочий цикл**

1. Изменение файлов в рабочей директории.
2. Подготовка изменений к коммиту:

```bash
git add file.txt
```

3. Создание коммита:

```bash
git commit -m "Добавил новую функцию"
```

4. Синхронизация с удалённым репозиторием:

```bash
git push origin main
```

5. Получение изменений от коллег:

```bash
git pull origin main
```

***

#### **Идея в целом**

Git **хранит историю проекта как серию снимков (snapshots)** файлов, позволяет работать параллельно в ветках, объединять изменения и восстанавливать любое состояние кода при необходимости.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/git/chto-takoe-git-kakov-princip-ego-raboty.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
