Перейти к основному содержимому

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

Конфликты слияния в Studio IDE часто возникают, когда несколько пользователей одновременно редактируют один и тот же раздел одного и того же файла. Из-за этого Git сложно определить, какие изменения включить в итоговый результат слияния.

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

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

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

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

Способ разрешения конфликта в обоих сценариях будет абсолютно одинаковым.

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

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

  • Панель действий git Commit and resolve в разделе Version Control вместо Commit — Это означает, что облачная среда Studio IDE обнаружила конфликты, которые необходимо разрешить.
  • Редактор, разделённый на две области — Левая область содержит ваши изменения кода и доступна только для чтения. Правая область содержит дополнительные изменения, доступна для редактирования и отмечает конфликт специальными маркерами:
<<<<<< HEAD
your current code
======
conflicting code
>>>>>> (some branch identifier)
  • Файл и путь выделены красным в File Catalog и отмечены значком предупреждения, указывающим на файлы, в которых нужно разрешить конфликты.
  • Имя файла выделено красным в разделе Changes и отмечено значком предупреждения.
  • Если вы нажмёте кнопку коммита, не разрешив конфликт, Studio IDE покажет всплывающее окно со списком файлов, в которых нужно разрешить конфликты.
Конфликтующий участок, требующий разрешения, будет выделенКонфликтующий участок, требующий разрешения, будет выделен
Всплывающее окно при попытке сделать коммит без разрешения конфликтаВсплывающее окно при попытке сделать коммит без разрешения конфликта

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

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

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

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

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

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

Нашли ошибку?

0
Loading