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

Платформа dbt

[Конфликты слияния](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) в [Studio IDE](https://docs.getdbt.tech/docs/platform/studio-ide/develop-in-studio.md) часто возникают, когда несколько пользователей одновременно редактируют один и тот же раздел одного и того же файла. Из-за этого Git сложно определить, какие изменения включить в итоговый результат слияния.

Процесс разрешения конфликтов слияния позволяет пользователям выбирать, какие строки кода сохранить и включить в коммит. В этом документе показано, как разрешать конфликты слияния в Studio IDE.

## Определение конфликтов слияния

С конфликтом слияния можно столкнуться в двух случаях:

* При подтягивании изменений из основной ветки, когда кто-то другой уже смержил конфликтующее изменение.
* При коммите ваших изменений в ту же ветку, когда другой пользователь уже успел закоммитить свои изменения раньше.

Способ [разрешения](#resolve-merge-conflicts) конфликта в обоих сценариях будет абсолютно одинаковым.

Например, если вы и ваш коллега внесли изменения в один и тот же файл и закоммитили их, вы столкнетесь с конфликтом слияния сразу после нажатия **Commit and sync**.

В Studio IDE отобразятся:

* Панель действий git **Commit and resolve** в разделе **Version Control** вместо **Commit** — Это означает, что облачная среда Studio IDE обнаружила конфликты, которые необходимо разрешить.
* Редактор, разделённый на две области — Левая область содержит ваши изменения кода и доступна только для чтения. Правая область содержит дополнительные изменения, доступна для редактирования и отмечает конфликт специальными маркерами:

```text
<<<<<< HEAD
    your current code
======
    conflicting code
>>>>>> (some branch identifier)
```

* Файл и путь выделены красным в **File Catalog** и отмечены значком предупреждения, указывающим на файлы, в которых нужно разрешить конфликты.
* Имя файла выделено красным в разделе **Changes** и отмечено значком предупреждения.
* Если вы нажмёте кнопку коммита, не разрешив конфликт, Studio IDE покажет всплывающее окно со списком файлов, в которых нужно разрешить конфликты.

[![Конфликтующий участок, требующий разрешения, будет выделен](/img/docs/dbt-platform/platform-ide/merge-conflict.png?v=2 "Конфликтующий участок, требующий разрешения, будет выделен")](#)Конфликтующий участок, требующий разрешения, будет выделен

[![Всплывающее окно при попытке сделать коммит без разрешения конфликта](/img/docs/dbt-platform/platform-ide/commit-without-resolve.png?v=2 "Всплывающее окно при попытке сделать коммит без разрешения конфликта")](#)Всплывающее окно при попытке сделать коммит без разрешения конфликта

## Разрешение конфликтов слияния

В облачной среде Studio IDE можно легко разрешать конфликты слияния, возникающие из-за конкурирующих изменений одних и тех же строк.

1. В Studio IDE вы можете редактировать конфликтующий файл в правой части редактора, выбирать строки кода, которые нужно сохранить, и удалять остальные.
   * Примечание: левая часть редактора доступна только для чтения, и вносить в неё изменения нельзя.
2. Удалите специальные флаги, или маркеры конфликта, `<<<<<<<`, `=======`, `>>>>>>>`, которые обозначают конфликт слияния, и выберите строки кода, которые нужно сохранить.
3. Если в файле несколько конфликтов слияния, прокрутите его вниз до следующего набора маркеров конфликта и повторите шаги один и два, чтобы разрешить конфликт слияния.
4. Нажмите **Save**. Вы увидите, что выделение строк исчезнет, а фон снова станет обычным. Это означает, что вы успешно разрешили конфликт.
5. Повторите этот процесс для каждого файла с конфликтом слияния.

[![Выбор строк кода для сохранения](/img/docs/dbt-platform/platform-ide/resolve-conflict.png?v=2 "Выбор строк кода для сохранения")](#)Выбор строк кода для сохранения

Редактирование файлов с конфликтами

* Если вы откроете файл с конфликтом в разделе **Changes**, его имя будет отображаться примерно как `model.sql (last commit)`. Этот файл доступен только для чтения, и редактировать его нельзя.
  <br />
* Если вы откроете файл с конфликтом в **File Catalog**, его можно будет редактировать в правой части редактора.

## Коммит изменений

После того как все конфликты слияния будут разрешены, последним шагом станет коммит внесенных изменений.

1. Нажмите **Commit and resolve** на панели действий Git.
2. Во всплывающем окне **Commit Changes** появится подтверждение, что все конфликты разрешены. Введите сообщение коммита и нажмите **Commit Changes**.
3. Studio IDE вернётся в обычное состояние, и вы сможете продолжить разработку!

[![Конфликт разрешён](/img/docs/dbt-platform/platform-ide/commit-resolve.png?v=2 "Конфликт разрешён")](#)Конфликт разрешён

[![Всплывающее окно Commit Changes для фиксации изменений](/img/docs/dbt-platform/platform-ide/commit-changes.png?v=2 "Всплывающее окно Commit Changes для фиксации изменений")](#)Всплывающее окно Commit Changes для фиксации изменений
