Слияние

Слияние заключается в том, чтобы влить в текущую ветку все изменения из другой ветки, начиная с того момента, как история этих веток разошлась. Удобнее всего выполнять слияние из панели История, потому что она показывает всю историю вашего репозитория.

Влить эту ветку (merge)

Чтобы влить ветку Б в текущую ветку А, можно сначала найти в 1C:EDT ветку Б, а затем выполнить слияние. Это можно сделать в разных панелях:

  • В панели История:
    • Убедитесь, что вы видите нужные вам изменения и ветки;
    • Найдите ветку Б или метку, которую вы хотите влить;
    • Нажмите Слить (merge) в контекстном меню этой ветки;
    • Если выбранный коммит указывает на несколько разных веток, выберите нужную.
  • В панели Навигатор:
    • Нажмите Групповая разработка > Слить (merge)... в контекстном меню проекта;
    • Выберите ветку Б или метку, которую вы хотите влить;
  • В панели Репозитории Git:
    • Найдите ветку Б или метку, которую вы хотите влить;
    • Нажмите Слить (merge) в контекстном меню этой ветки.

Параметры слияния

1C:EDT предложит вам настроить параметры слияния. Если стандартные параметры вас устраивают, вы можете ничего не менять и просто нажать Слить. Параметры слияния:

  • Параметры слияния
    • Зафиксировать (фиксировать результат) — влить изменения и создать коммит слияния;
    • Не фиксировать (подготовить слияние, но не фиксировать) — влить изменения, подготовить коммит слияния, но не фиксировать его;
    • Объединить коммиты (слить в рабочем каталоге и не создавать коммит слияния) — влить изменения и вместо коммита слияния подготовить обычный коммит;
  • Параметры перемотки — что делать, если результатом получения и слияния является перемотка вперед:
    • Обновить только указатель ветки, если возможна перемотка вперед — обновить только указатель текущей ветки;
    • Создать коммит слияния, даже если возможна перемотка вперед — создать коммит слияния и установить указатель текущей ветки на него;
    • Отменить, если перемотка вперед невозможна — прервать слияние, если его результатом не может быть перемотка вперед;
  • Стратегия сопоставления — способ установления взаимного соответствия между объектами вливаемой и текущей конфигурации. Этот способ будет использоваться в том случае, если существуют конфликтующие изменения, которые нужно разрешить вручную в редакторе сравнения и объединения конфигураций:
    • По UUID — по внутреннему идентификатору объекта конфигурации;
    • По имени — по имени объекта конфигурации;
    • По UUID, затем по имени — сначала ищется объект конфигурации с таким же внутренним идентификатором. Если он не найден, тогда ищется объект конфигурации с таким же именем.
  • Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем) — установка этого флажка позволяет принудительно открыть редактор сравнения и объединения конфигураций даже в том случае, если отсутствуют конфликтные изменения. Это может быть полезно в том случае, когда хочется визуально проконтролировать изменения, вносимые в текущую конфигурацию.
  • Внешние настройки объединения — путь к файлу, в котором хранятся настройки объединения конфигураций, сохраненные ранее из редактора сравнения и объединения конфигураций.

Результат слияния

После нажатия Слить может возникнуть одна из следующих ситуаций:
  • Already-up-to-date (уже в актуальном состоянии) — текущая локальная ветка (например, master) указывает на такой коммит, для которого вливаемая ветка или метка (например, feature) является предшественником. Обновлять нечего, никаких изменений не произошло;
  • Fast-forward (перемотка вперед) — текущая локальная ветка (например, master) указывает на коммит, который является предшественником вливаемой ветки или метки (например, feature). В этом случае локальная ветка перемещается так, чтобы указывать на вливаемую ветку или метку. Этот новый HEAD извлекается в рабочий каталог;
  • Если ни одно из перечисленных условий неприменимо, 1C:EDT запускает процесс слияния. Слияние может иметь два результата:
    • Merged (влито) — сливаемые ветки не имеют конфликтующих друг с другом изменений. 1C:EDT создает коммит слияния и перемещает текущую ветку так, чтобы она указывала на коммит слияния;
    • Conflicting (конфликтующие изменения) — в сливаемых ветках есть конфликтующие друг с другом изменения. 1C:EDT открывает редактор сравнения и объединения конфигураций для того, чтобы вы вручную разрешили эти конфликты;
    Редактор сравнения и объединения конфигураций открывается при одновременном выполнении следующих условий:
    • Выполняется реальное сравнение/объединение проектов из репозитория и между сливаемыми ветками есть какие-то отличия;
    • При сравнении обнаруживаются потенциальные проблемы (в том числе конфликтные изменения) или выбрана опция Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем).
    В следующих случаях сравнение / объединение не выполняется, поэтому редактор не открывается:
    • Если возможна перемотка вперед и выбран любой параметр перемотки, отличный от Создать коммит слияния, даже если возможна перемотка вперед;
    • Если имя проекта или его расположение относительного корня репозитория не совпадает в сливаемых ветках.

    Если слияние привело к конфликтам, вы можете прервать его, выполнив жесткий сброс до текущей ветки. Это можно сделать как до разрешения конфликтов (в состоянии Conflicting), так и после (в состоянии Merged).

Влить произвольную ветку (merge)

Чтобы влить ветку Б в текущую ветку А, можно сначала инициировать процесс слияния, а затем выбрать ветку Б. Это можно сделать в разных панелях:

  • В панели Навигатор нажмите Групповая разработка > Слить (merge)... в контекстном меню проекта и выберите ветку или метку, которую вы хотите влить в текущую;
  • В панели Репозитории Git нажмите Слить (merge)... в контекстном меню текущей ветки и выберите ветку или метку, которую вы хотите влить в текущую.

1C:EDT предложит вам настроить параметры слияния. Если стандартные параметры вас устраивают, вы можете ничего не менять и просто нажать Слить. Параметры слияния:

  • Параметры слияния
    • Зафиксировать (фиксировать результат) — влить изменения и создать коммит слияния;
    • Не фиксировать (подготовить слияние, но не фиксировать) — влить изменения, подготовить коммит слияния, но не фиксировать его;
    • Объединить коммиты (слить в рабочем каталоге и не создавать коммит слияния) — влить изменения и вместо коммита слияния подготовить обычный коммит;
  • Параметры перемотки — что делать, если результатом получения и слияния является перемотка вперед:
    • Обновить только указатель ветки, если возможна перемотка вперед — обновить только указатель текущей ветки;
    • Создать коммит слияния, даже если возможна перемотка вперед — создать коммит слияния и установить указатель текущей ветки на него;
    • Отменить, если перемотка вперед невозможна — прервать слияние, если его результатом не может быть перемотка вперед;
  • Стратегия сопоставления — способ установления взаимного соответствия между объектами вливаемой и текущей конфигурации. Этот способ будет использоваться в том случае, если существуют конфликтующие изменения, которые нужно разрешить вручную в редакторе сравнения и объединения конфигураций:
    • По UUID — по внутреннему идентификатору объекта конфигурации;
    • По имени — по имени объекта конфигурации;
    • По UUID, затем по имени — сначала ищется объект конфигурации с таким же внутренним идентификатором. Если он не найден, тогда ищется объект конфигурации с таким же именем.
  • Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем) — установка этого флажка позволяет принудительно открыть редактор сравнения и объединения конфигураций даже в том случае, если отсутствуют конфликтные изменения. Это может быть полезно в том случае, когда хочется визуально проконтролировать изменения, вносимые в текущую конфигурацию.
  • Внешние настройки объединения — путь к файлу, в котором хранятся настройки объединения конфигураций, сохраненные ранее из редактора сравнения и объединения конфигураций.

Результат слияния

После нажатия Слить может возникнуть одна из следующих ситуаций:
  • Already-up-to-date (уже в актуальном состоянии) — текущая локальная ветка (например, master) указывает на такой коммит, для которого вливаемая ветка или метка (например, feature) является предшественником. Обновлять нечего, никаких изменений не произошло;
  • Fast-forward (перемотка вперед) — текущая локальная ветка (например, master) указывает на коммит, который является предшественником вливаемой ветки или метки (например, feature). В этом случае локальная ветка перемещается так, чтобы указывать на вливаемую ветку или метку. Этот новый HEAD извлекается в рабочий каталог;
  • Если ни одно из перечисленных условий неприменимо, 1C:EDT запускает процесс слияния. Слияние может иметь два результата:
    • Merged (влито) — сливаемые ветки не имеют конфликтующих друг с другом изменений. 1C:EDT создает коммит слияния и перемещает текущую ветку так, чтобы она указывала на коммит слияния;
    • Conflicting (конфликтующие изменения) — в сливаемых ветках есть конфликтующие друг с другом изменения. 1C:EDT открывает редактор сравнения и объединения конфигураций для того, чтобы вы вручную разрешили эти конфликты;
    Редактор сравнения и объединения конфигураций открывается при одновременном выполнении следующих условий:
    • Выполняется реальное сравнение/объединение проектов из репозитория и между сливаемыми ветками есть какие-то отличия;
    • При сравнении обнаруживаются потенциальные проблемы (в том числе конфликтные изменения) или выбрана опция Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем).
    В следующих случаях сравнение / объединение не выполняется, поэтому редактор не открывается:
    • Если возможна перемотка вперед и выбран любой параметр перемотки, отличный от Создать коммит слияния, даже если возможна перемотка вперед;
    • Если имя проекта или его расположение относительного корня репозитория не совпадает в сливаемых ветках.

    Если слияние привело к конфликтам, вы можете прервать его, выполнив жесткий сброс до текущей ветки. Это можно сделать как до разрешения конфликтов (в состоянии Conflicting), так и после (в состоянии Merged).

Прервать слияние

Если слияние привело к конфликтам, вы можете прервать его, выполнив жесткий сброс до текущей ветки. Это можно сделать как до разрешения конфликтов (в состоянии Conflicting), так и после (в состоянии Merged).

Отменить коммит слияния

Например, вы зафиксировали слияние и через какое-то время поняли, что они оно вам не подходит. Вы можете создать другой коммит, который откатит все изменения, сделанные этим коммитом слияния.

Cherry Pick

Операция Cherry Pick применяет копию отмеченного коммита поверх текущего коммита. Таким способом можно переносить в текущую ветку единичные коммиты из других веток.

Чтобы выполнить Cherry Pick откройте панель История и нажмите Скопировать коммиты (Cherry-Pick)... в контекстном меню того коммита, который вы хотите включить в текущую ветку.

Назначение полей:

  • Стратегия сопоставления — способ установления взаимного соответствия между объектами вливаемой и текущей конфигурации. Этот способ будет использоваться в том случае, если существуют конфликтующие изменения, которые нужно разрешить вручную в редакторе сравнения и объединения конфигураций:
    • По UUID — по внутреннему идентификатору объекта конфигурации;
    • По имени — по имени объекта конфигурации;
    • По UUID, затем по имени — сначала ищется объект конфигурации с таким же внутренним идентификатором. Если он не найден, тогда ищется объект конфигурации с таким же именем.
  • Сравнивать модули с учетом структуры — если флажок установлен, то модули встроенного языка сравниваются в разрезе отдельных методов, которые содержатся в модуле. В противном случае модули сравниваются как один общий текст;
  • Открыть редактор сравнения/объединения (даже при отсутствии потенциальных проблем) — установка этого флажка позволяет принудительно открыть редактор сравнения и объединения конфигураций даже в том случае, если отсутствуют конфликтные изменения. Это может быть полезно в том случае, когда хочется визуально проконтролировать изменения, вносимые в текущую конфигурацию.
  • Внешние настройки объединения — путь к файлу, в котором хранятся настройки объединения конфигураций, сохраненные ранее из редактора сравнения и объединения конфигураций.