Слияние

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

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

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

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

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

  • Параметры слияния
    • Зафиксировать (фиксировать результат) — влить изменения и создать коммит слияния;
    • Не фиксировать (подготовить слияние, но не фиксировать) — влить изменения, подготовить коммит слияния, но не фиксировать его;
    • Объединить коммиты (слить в рабочем каталоге и не создавать коммит слияния) — влить изменения и вместо коммита слияния подготовить обычный коммит;
  • Параметры перемотки — что делать, если результатом получения и слияния является перемотка вперед:
    • Обновить только указатель ветки, если возможна перемотка вперед — обновить только указатель текущей ветки;
    • Создать коммит слияния, даже если возможна перемотка вперед — создать коммит слияния и установить указатель текущей ветки на него;
    • Отменить, если перемотка вперед невозможна — прервать слияние, если его результатом не может быть перемотка вперед;

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

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

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

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

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

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

  • Параметры слияния
    • Зафиксировать (фиксировать результат) — влить изменения и создать коммит слияния;
    • Не фиксировать (подготовить слияние, но не фиксировать) — влить изменения, подготовить коммит слияния, но не фиксировать его;
    • Объединить коммиты (слить в рабочем каталоге и не создавать коммит слияния) — влить изменения и вместо коммита слияния подготовить обычный коммит;
  • Параметры перемотки — что делать, если результатом получения и слияния является перемотка вперед:
    • Обновить только указатель ветки, если возможна перемотка вперед — обновить только указатель текущей ветки;
    • Создать коммит слияния, даже если возможна перемотка вперед — создать коммит слияния и установить указатель текущей ветки на него;
    • Отменить, если перемотка вперед невозможна — прервать слияние, если его результатом не может быть перемотка вперед;

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

После нажатия Слить может возникнуть одна из следующих ситуаций:
  • 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... в контекстном меню того коммита, который вы хотите включить в текущую ветку.

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