> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/git/konflikty-sliyaniya.md).

# Конфликты слияния

**Конфликты слияния (Merge Conflicts)** в Git возникают, когда Git **не может автоматически объединить изменения из двух веток**, потому что изменения касаются одних и тех же строк в одном файле или затрагивают один и тот же участок кода.

***

#### **Причины конфликтов**

1. Две ветки изменили **одни и те же строки** в файле.
2. Одна ветка **удалила файл**, который другая ветка изменила.
3. Изменения пересекаются в логике или структуре кода, и Git не может решить, что оставить.

***

#### **Как Git сигнализирует о конфликте**

* При попытке `git merge branch_name` или `git cherry-pick commit_hash` Git останавливает процесс и сообщает:

```
CONFLICT (content): Merge conflict in <filename>
```

* Файлы с конфликтами помечаются как **неразрешённые**.

***

#### **Пример конфликта в файле**

```
<<<<<<< HEAD
print("Hello from main branch")
=======
print("Hello from feature branch")
>>>>>>> feature
```

* `HEAD` — текущая ветка.
* `feature` — ветка, которую пытаются слить.
* Между `<<<<<<<` и `=======` — код текущей ветки, между `=======` и `>>>>>>>` — код ветки, которую сливают.

***

#### **Как разрешать конфликты**

1. Открыть файл и выбрать, какой код оставить, или объединить вручную.
2. После исправления отметить конфликт как решённый:

```bash
git add <filename>
```

3. Завершить слияние:

```bash
git commit
```

или, если это был cherry-pick:

```bash
git cherry-pick --continue
```

***

**Итог:**\
Конфликт слияния — это сигнал Git о том, что **нужна ручная проверка и выбор правильного варианта изменений**, чтобы сохранить целостность кода.
