Удаленные репозитории

Удаленные репозитории можно увидеть в панели Репозитории Git в ветке Удаленные репозитории. Это те репозитории, ветки которых вы отслеживаете из своего репозитория.

Есть два действия, в результате которых появляются удаленные репозитории:

Клонировать репозиторий (clone)

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

Начать клонирование удаленного репозитория можно разными способами:
  • В главном меню нажмите Файл > Импорт... > Git > Проекты из Git > Клонировать URI;
  • В панели Репозитории Git нажмите (Клонировать репозиторий Git) в командной панели.

1. Выберите исходный репозиторий

В поле URI укажите расположение удаленного репозитория. Например:

ssh://user@example.com:6888/dir/gitproject.git — на удаленном сервере example.com
http://example.com/dir/gitproject.git — на удаленном сервере example.com
file://\\example\gitproject — на сетевом компьютере example
file://D:\dir\gitproject — в локальном каталоге

После этого остальные поля будут заполнены автоматически насколько это возможно.

Предупреждение: Когда вы создаете локальный репозиторий, создавайте его таким образом, чтобы каталог репозитория и рабочая область 1C:EDT не находились в иерархии друг друга. Подробнее об этом читайте здесь.

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

  • Расположение
    • URI — полный URI удаленного репозитория или путь в файловой системе. Для выбора локального каталога можно нажать Обзор.... Каталог репозитория это каталог, содержащий папку .git;
    • Сервер — имя удаленного сервера. Если клонируется локальный или сетевой каталог, это поле будет пустым;
    • Путь к репозиторию — путь к репозиторию на сервере или в файловой системе
  • Соединение
    • Протокол — один из поддерживаемых протоколов:
      • file — файловый доступ на локальном компьютере или в локальной сети;
      • ftpFile Transfer Protocol;
      • git — самый эффективный встроенный протокол Git (порт по умолчанию 9418). Этот протокол не обеспечивает аутентификацию. Обычно он используется для анонимного доступа к репозиторию на чтение;
      • httpHypertext Transfer Protocol;
      • httpsHypertext Transfer Protocol Secure;
      • sftpSSH File Transfer Protocol;
      • ssh — Git по протоколу secure shell (SSH). Обычно используется для аутентифицированного доступа к репозиторию на запись;
      Примечание: Если вы находитесь за брандмауэром, вам может потребоваться настроить параметры прокси-сервера: Окно > Параметры... > Общие > Сетевые соединения.
    • Порт — порт сервера;
  • Аутентификация
    • Пользователь — имя пользователя для доступа к удаленному репозиторию;
    • Пароль — пароль пользователя для доступа к удаленному репозиторию;
    • Сохранить в защищенном хранилище — сохранить параметры аутентификации в защищенном хранилище Eclipse.

2. Выберите ветки

На втором шаге мастера выберите те ветки удаленного репозитория, которые надо склонировать. Если вы не уверены, какие именно ветки вам нужны, выберите все.

Также вы можете выбрать способ получения меток из удаленного репозитория:
  • Tag fetching strategy
    • When fetching a commit, also fetch its tags — когда получаете коммит также получить и его метки;
    • Fetch all tags and their commits — получить все метки и их коммиты;
    • Don't fetch any tags — не получать никакие метки.

3. Выберите локальный репозиторий

Предупреждение: Когда вы создаете локальный репозиторий, создавайте его таким образом, чтобы каталог репозитория и рабочая область 1C:EDT не находились в иерархии друг друга. Подробнее об этом читайте здесь.

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

Также установите флаг Импортировать все проекты после завершения операции клонирования, чтобы проекты из репозитория появились в панели Навигатор.

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

  • Расположение
    • Каталог — каталог, в котором будет находиться локальный репозиторий. Если он не существует, он будет создан.
      Вы можете настроить стандартный путь для локальных репозиториев, для этого нажмите Окно > Параметры... > Групповая разработка > Git > Клонирование репозиториев > Папка репозитория по умолчанию;
    • Начальная ветка — выберите локальную ветку, которая будет создана и первоначально извлечена. Обычно это ветка master;
    • Клонировать подмодули — также клонировать подмодули, содержащиеся в удаленном репозитории;
  • Конфигурация
    • Имя удаленного репозитория — задайте имя для удаленного репозитория. Обычно это origin;
  • Проекты
    • Импортировать все проекты после завершения операции клонирования — импортировать в рабочую область 1C:EDT проекты, содержащиеся в локальном репозитории;
    • Рабочие наборы
      • Добавить проект в рабочие наборы — не используется при разработке прикладных решений «1С:Предприятия».

4. Нажмите Готово

1C:EDT склонирует репозиторий и он появится в панели Репозитории Git (перспектива Git). После этого 1C:EDT импортирует проект и покажет его в панели Навигатор (перспектива 1C:Enterprise).

Отправить в origin (push)

Когда у локальной ветки есть настройки исходного репозитория, 1C:EDT может отправлять в этот репозиторий изменения без дополнительных вопросов. Обычно исходный репозиторий имеет имя origin, поэтому команда, оправляющая в него изменения, называется Push to origin.

Если при клонировании репозитория вы дали ему другое имя, то в названии команды вместо origin будет это имя. Если настройки исходного репозитория отсутствуют, то эта команда будет называться Отправить в Upstream.

Отправить в origin можно несколькими способами:
  • В панели Навигатор нажмите Групповая разработка > Push to origin в контекстном меню проекта;
  • В панели Репозитории Git нажмите Push to origin в контекстном меню локального репозитория;
  • В панели Репозитории Git нажмите Отправить в контекстном меню удаленного репозитория с именем origin.

Также вы можете во время фиксации изменений в локальном репозитории сразу же отправить их в удаленный репозиторий. Для этого нажмите Фиксировать и отправить... в панели Индексирование Git.

После отправки изменений 1C:EDT покажет окно с информацией об отправленных данных или с сообщением об ошибках, если отправка не удалась.
Примечание: Ошибка может возникнуть потому, что ветка на удаленном сервере была изменена другим пользователем и теперь, прежде чем отправлять свои изменения на сервер, нужно сначала получить с сервера новое состояние удаленной ветки и объединить его со своими изменениями локально.

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

Отправить ветку master (push)

Отправить текущую ветку в удаленный репозиторий можно несколькими способами:

1. Выбор удаленного репозитория и ветки

Назначение полей:
  • Источник — локальная ветка и коммит, которые будут отправлены в удаленный репозиторий;
  • Назначение — удаленный репозиторий и его ветка:
    • Remote — удаленный репозиторий, в который будут отправлены изменения;
    • Branch — ветка удаленного репозитория, в которую будут отправлены изменения;
  • Настроить upstream для отправки и получения — если флажок установлен, то в настройки исходного репозитория для этой ветки будет записан выбранный способ объединения изменений:
    • When pulling — способ объединения изменений при их получении из удаленного репозитория;
      • Объединить;
      • Перебазировать;
      • Перебазировать с сохранением коммитов слияния;
      • Перебазировать интерактивно.
  • Принудительно перезаписать ветку в удаленном репозитории, если она существует и разошлась — если флажок установлен, то отправляемые изменения безусловно перезапишут данные удаленной ветки без попытки объединения или разрешения конфликтов;
  • Показать продвинутый диалог отправки — вместо текущего, упрощенного диалога, открывает полный мастер отправки.

2. Подтверждение отправки

Диалог показывает изменения, которые будут перенесены в целевой репозиторий. Если это не соответствует вашим ожиданиям, нажмите < Назад и внесите изменения.

Установите флажок Cancel push if result would be different than abowe because of changes on remote если вы хотите быть уверены в том, что в результате отправки вы получите именно то, что вы видите в этом диалоге.

Установите флажок Show dialog with result only when it different from the confirmed result abowe чтобы получить отчет только в том случае, если результат отправки отличается от того, что вы видите в этом диалоге.

3. Результат отправки

После отправки изменений 1C:EDT покажет окно с информацией об отправленных данных или с сообщением об ошибках, если отправка не удалась.
Примечание: Ошибка может возникнуть потому, что ветка на удаленном сервере была изменена другим пользователем и теперь, прежде чем отправлять свои изменения на сервер, нужно сначала получить с сервера новое состояние удаленной ветки и объединить его со своими изменениями локально.

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

Отправить в произвольный удаленный репозиторий (push)

Совет: Можете посмотреть пример Отправить ветку в удаленный репозиторий.
Отправить в произвольный удаленный репозиторий можно несколькими способами:
  • В панели Навигатор нажмите Групповая разработка > Удаленный репозиторий > Отправить... в контекстном меню проекта;
  • В панели Репозитории Git нажмите Удаленный репозиторий > Отправить... в контекстном меню локального репозитория;
  • В панели Разработка нажмите Групповая разработка > Удаленный репозиторий > Отправить... в контекстном меню проекта.

1. Расположение целевого репозитория

Если существуют настройки исходного репозитория, будет выбран пункт Ранее настроенный удаленный репозиторий. В выпадающем списке можно выбрать и другие удаленные репозитории.

Если таких настроек нет или они вас не устраивают, выберите пункт Настроить.

В поле URI укажите расположение удаленного репозитория. Например:

ssh://user@example.com:6888/dir/gitproject.git — на удаленном сервере example.com
http://example.com/dir/gitproject.git — на удаленном сервере example.com
file://\\example\gitproject — на сетевом компьютере example
file://D:\dir\gitproject — в локальном каталоге

После этого остальные поля будут заполнены автоматически насколько это возможно.

Предупреждение: Когда вы создаете локальный репозиторий, создавайте его таким образом, чтобы каталог репозитория и рабочая область 1C:EDT не находились в иерархии друг друга. Подробнее об этом читайте здесь.

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

  • Расположение
    • URI — полный URI удаленного репозитория или путь в файловой системе. Для выбора локального каталога можно нажать Обзор.... Каталог репозитория это каталог, содержащий папку .git;
    • Сервер — имя удаленного сервера. Если клонируется локальный или сетевой каталог, это поле будет пустым;
    • Путь к репозиторию — путь к репозиторию на сервере или в файловой системе
  • Соединение
    • Протокол — один из поддерживаемых протоколов:
      • file — файловый доступ на локальном компьютере или в локальной сети;
      • ftpFile Transfer Protocol;
      • git — самый эффективный встроенный протокол Git (порт по умолчанию 9418). Этот протокол не обеспечивает аутентификацию. Обычно он используется для анонимного доступа к репозиторию на чтение;
      • httpHypertext Transfer Protocol;
      • httpsHypertext Transfer Protocol Secure;
      • sftpSSH File Transfer Protocol;
      • ssh — Git по протоколу secure shell (SSH). Обычно используется для аутентифицированного доступа к репозиторию на запись;
      Примечание: Если вы находитесь за брандмауэром, вам может потребоваться настроить параметры прокси-сервера: Окно > Параметры... > Общие > Сетевые соединения.
    • Порт — порт сервера;
  • Аутентификация
    • Пользователь — имя пользователя для доступа к удаленному репозиторию;
    • Пароль — пароль пользователя для доступа к удаленному репозиторию;
    • Сохранить в защищенном хранилище — сохранить параметры аутентификации в защищенном хранилище Eclipse.

2. Соответствия ссылок для отправки

  • All branches — добавляет соответствия для отправки один в один локальных веток в удаленный репозиторий;
  • All tags — добавляет соответствия для отправки один в один локальных меток в удаленный репозиторий;
  • Чтобы создать произвольное соответствие ссылок, выберите ссылки в полях Source ref, Destination ref и нажмите + Add Spec;
  • Чтобы удалить ссылку в удаленном репозитории, выберите ее в поле Remote ref to delete и нажмите х Add Spec. Отправка такой спецификации удалит указанную ссылку в удаленном репозитории.
  • Если вы добавите несколько конфликтующих между собой соответствий, они будут выделены красным. Чтобы избавиться от конфликта, удалите или отредактируйте какие-нибудь из них.

3. Подтверждение отправки

Диалог показывает изменения, которые будут перенесены в целевой репозиторий. Если это не соответствует вашим ожиданиям, нажмите < Назад и внесите изменения.

Установите флажок Cancel push if result would be different than abowe because of changes on remote если вы хотите быть уверены в том, что в результате отправки вы получите именно то, что вы видите в этом диалоге.

Установите флажок Show dialog with result only when it different from the confirmed result abowe чтобы получить отчет только в том случае, если результат отправки отличается от того, что вы видите в этом диалоге.

4. Результат отправки

После отправки изменений 1C:EDT покажет окно с информацией об отправленных данных или с сообщением об ошибках, если отправка не удалась.
Примечание: Ошибка может возникнуть потому, что ветка на удаленном сервере была изменена другим пользователем и теперь, прежде чем отправлять свои изменения на сервер, нужно сначала получить с сервера новое состояние удаленной ветки и объединить его со своими изменениями локально.

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

Настройки исходного репозитория (upstream configuration)

Обычно, когда вы работаете с локальной веткой, она имеет настройки исходного репозитория (Upstream Configuration).

В большинстве случаев настройки исходного репозитория создаются автоматически во время клонирования репозитория или во время создания новой локальной ветки. Локальная ветка создается на основе ветки удаленного отслеживания, а она, в свою очередь, связана с удаленной веткой, которая содержит информацию, необходимую для доступа к удаленному репозиторию.

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

Посмотреть настройки исходного репозитория

В панели Репозитории Git нажмите Показать в > Свойства в контекстном меню локальной ветки. В панели Свойства вы увидите настройки для выбранной ветки. Чтобы посмотреть настройки другой ветки, выберите ее.

Изменить настройки исходного репозитория
В панели Репозитории Git нажмите Настроить ветку... в контекстном меню ветки. Назначение полей:
  • Remote — удаленный репозиторий. "." обозначает локальный репозиторий;
  • Push remote — удаленный репозиторий для отправки. Если не выбран, будет использоваться репозиторий, указанный в поле Remote;
  • Upstream-ветка — ветка удаленного репозитория, которую должна отслеживать выбранная локальная ветка;
  • When pulling — способ объединения изменений при их получении из удаленного репозитория;
    • Объединить;
    • Перебазировать;
    • Перебазировать с сохранением коммитов слияния;
    • Перебазировать интерактивно.

Настроить отправку в исходный репозиторий (configure push)

Отправку в исходный репозиторий можно настроить несколькими способами:
  • B диалоге результатов отправки нажмите Настроить...;
  • В панели Навигатор нажмите Групповая разработка > Удаленный репозиторий > Настроить отправку в Upstream... в контекстном меню проекта;
  • В панели Репозитории Git нажмите Настроить отправку... в контекстном меню удаленного репозитория.
В диалоге можно настроить URI для отправки и соответствия веток (RefSpecs). Назначение полей:
  • Ветка — текущая извлеченная ветка;
  • URI — если список URI отправки не заполнен, то для отправки используется этот адрес;
  • URI отправки — если в этом списке есть хотя бы один адрес, то для отправки используются адреса из этого списка;
    Важно: Будьте осторожны! Если список URI отправки пуст и URI изменен в этом диалоге, то новый URI будет использоваться также и для операции Получить и слить.
  • Ref mappings — позволяет указать одно или несколько соответствий веток для отправки;

    Соответствия ссылок (RefSpecs) используются в операциях получения и отправки для того, чтобы описать связь между удаленной ссылкой и локальной ссылкой. Каждое соответствие отображается в формате <локальная ссылка>:<удаленная ссылка>. Ему может предшествовать знак "+", который обозначает режим принудительного обновления. Например:

    HEAD:refs/heads/master

    Это значит, что текущая извлеченная ветка (HEAD) будет отправлена в ветку master удаленного репозитория (refs/heads/master).

    • Добавить... — открывает небольшой диалог, который помогает создать соответствие ссылок.
    • Вставить... — добавляет в список готовое обозначение соответствия из буфера обмена;
    • Дополнительно... — открывает диалог, который помогает создать и отредактировать сразу несколько соответствий;
      • All branches — добавляет соответствия для отправки один в один локальных веток в удаленный репозиторий;
      • All tags — добавляет соответствия для отправки один в один локальных меток в удаленный репозиторий;
      • Чтобы создать произвольное соответствие ссылок, выберите ссылки в полях Source ref, Destination ref и нажмите + Add Spec;
      • Чтобы удалить ссылку в удаленном репозитории, выберите ее в поле Remote ref to delete и нажмите х Add Spec. Отправка такой спецификации удалит указанную ссылку в удаленном репозитории.
      • Если вы добавите несколько конфликтующих между собой соответствий, они будут выделены красным. Чтобы избавиться от конфликта, удалите или отредактируйте какие-нибудь из них.
    • Сохранить и отправить — сохранить изменения и немедленно отправить;
    • Сохранить — сохранить изменения и не отправлять;
    • Dry-Run — отправить и не сохранять изменения;
    • Восстановить — отменить изменения;
    • Отмена — отказаться от настройки отправки.

Получить из origin (fetch)

Когда у локальной ветки есть настройки исходного репозитория, 1C:EDT может получать из этого репозитория изменения без дополнительных вопросов. Обычно исходный репозиторий имеет имя origin, поэтому команда, получающая из него изменения, называется Получить из origin.

Если при клонировании репозитория вы дали ему другое имя, то в названии команды вместо origin будет это имя. Если настройки исходного репозитория отсутствует, то эта команда будет называться Получить из Upstream.

Получить из origin можно несколькими способами:

  • В панели Навигатор нажмите Групповая разработка > Получить из origin в контекстном меню проекта;
  • В панели Репозитории Git нажмите Получить из origin в контекстном меню локального репозитория;
  • В панели Репозитории Git нажмите Получить в контекстном меню удаленного репозитория с именем origin.

После получения изменений 1C:EDT покажет окно с информацией о полученных данных или с сообщением об ошибках.

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

Получить из произвольного удаленного репозитория (fetch)

Получить изменения из произвольного удаленного репозитория можно несколькими способами:
  • В панели Навигатор нажмите Групповая разработка > Удаленный репозиторий > Получить из... в контекстном меню проекта;
  • В панели Репозитории Git нажмите Удаленный репозиторий > Получить... в контекстном меню локального репозитория;
  • В панели Разработка нажмите Групповая разработка > Удаленный репозиторийПолучить из... в контекстном меню проекта.

1. Расположение удаленного репозитория

Если существуют настройки исходного репозитория, будет выбран пункт Ранее настроенный удаленный репозиторий. В выпадающем списке можно выбрать и другие удаленные репозитории.

Если таких настроек нет или они вас не устраивают, выберите пункт Настроить.

В поле URI укажите расположение удаленного репозитория. Например:

ssh://user@example.com:6888/dir/gitproject.git — на удаленном сервере example.com
http://example.com/dir/gitproject.git — на удаленном сервере example.com
file://\\example\gitproject — на сетевом компьютере example
file://D:\dir\gitproject — в локальном каталоге

После этого остальные поля будут заполнены автоматически насколько это возможно.

Предупреждение: Когда вы создаете локальный репозиторий, создавайте его таким образом, чтобы каталог репозитория и рабочая область 1C:EDT не находились в иерархии друг друга. Подробнее об этом читайте здесь.

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

  • Расположение
    • URI — полный URI удаленного репозитория или путь в файловой системе. Для выбора локального каталога можно нажать Обзор.... Каталог репозитория это каталог, содержащий папку .git;
    • Сервер — имя удаленного сервера. Если клонируется локальный или сетевой каталог, это поле будет пустым;
    • Путь к репозиторию — путь к репозиторию на сервере или в файловой системе
  • Соединение
    • Протокол — один из поддерживаемых протоколов:
      • file — файловый доступ на локальном компьютере или в локальной сети;
      • ftpFile Transfer Protocol;
      • git — самый эффективный встроенный протокол Git (порт по умолчанию 9418). Этот протокол не обеспечивает аутентификацию. Обычно он используется для анонимного доступа к репозиторию на чтение;
      • httpHypertext Transfer Protocol;
      • httpsHypertext Transfer Protocol Secure;
      • sftpSSH File Transfer Protocol;
      • ssh — Git по протоколу secure shell (SSH). Обычно используется для аутентифицированного доступа к репозиторию на запись;
      Примечание: Если вы находитесь за брандмауэром, вам может потребоваться настроить параметры прокси-сервера: Окно > Параметры... > Общие > Сетевые соединения.
    • Порт — порт сервера;
  • Аутентификация
    • Пользователь — имя пользователя для доступа к удаленному репозиторию;
    • Пароль — пароль пользователя для доступа к удаленному репозиторию;
    • Сохранить в защищенном хранилище — сохранить параметры аутентификации в защищенном хранилище Eclipse.

2. Соответствия ссылок для получения

3. Результат получения

После получения изменений 1C:EDT покажет окно с информацией о полученных данных или с сообщением об ошибках.

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

Настроить получение из исходного репозитория (configure fetch)

Получение из исходного репозитория можно настроить несколькими способами:
  • B диалоге результатов получения нажмите Настроить...;
  • В панели Навигатор нажмите Групповая разработка > Удаленный репозиторий > Настроить получение из Upstream... в контекстном меню проекта;
  • В панели Репозитории Git нажмите Настроить получение... в контекстном меню удаленного репозитория.
В диалоге можно настроить URI для получения и соответствия веток (RefSpecs). Назначение полей:
  • Ветка — текущая ветка, в которую будут получены изменения;
  • URI — адрес удаленного репозитория;
  • Ref mappings — позволяет указать одно или несколько соответствий веток для получения;

    Соответствия веток (RefSpecs) используются в операциях получения и отправки для того, чтобы описать связь между удаленной ссылкой и локальной ссылкой. Каждое соответствие отображается в формате <удаленная ссылка>:<локальная ссылка>. Ему может предшествовать знак "+", который обозначает режим принудительного обновления. Например:

    +refs/heads/*:refs/remotes/origin/*

    Это значит, что все локальные ветки удаленного репозитория (refs/heads/*) будут получены в соответствующие ветки удаленного отслеживания, расположенные в вашем локальном репозитории (refs/remotes/origin/*). При этом данные в ветках удаленного отслеживания будут принудительно обновлены (+).

    • Добавить... — открывает небольшой диалог, который помогает создать соответствие ссылок.
    • Вставить... — добавляет в список готовое обозначение соответствия из буфера обмена;
    • Дополнительно... — открывает диалог, который помогает создать и отредактировать сразу несколько соответствий;
      • All branches — добавляет соответствия для получения один в один локальных веток из удаленного репозитория;
      • All tags — добавляет соответствия для получения один в один локальных меток из удаленного репозитория;
      • Чтобы создать произвольное соответствие ссылок, выберите ссылки в полях Source ref, Destination ref и нажмите + Add Spec;
    • Сохранить и получить — сохранить изменения и немедленно получить;
    • Сохранить — сохранить изменения и не получать;
    • Dry-Run — получить и не сохранять изменения;
    • Восстановить — отменить изменения;
    • Отмена — отказаться от настройки получения.

Получить из исходного репозитория и слить (pull)

Получить изменения из исходного репозитория и влить их в текущую ветку можно несколькими способами:

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

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

  • Failed (неудачно) — одна из возможных причин этого результата это конфликтующие изменения, содержащиеся в рабочем каталоге.
  • Merge input — коммиты, которые были объединены.

Получить из произвольного удаленного репозитория и слить (pull)

Получить изменения из произвольного удаленного репозитория и влить их в текущую ветку можно несколькими способами:

1. Удаленная ветка и способ объединения изменений

2. Настройки объединения

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

3. Результат выполнения операции

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

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

  • Failed (неудачно) — одна из возможных причин этого результата это конфликтующие изменения, содержащиеся в рабочем каталоге.
  • Merge input — коммиты, которые были объединены.

Создать удаленный репозиторий

В панели Репозитории Git нажмите Создать удаленный репозиторий... в контекстном меню ветки Удаленные репозитории.

1. Имя удаленного репозитория

В поле Remote name задайте имя удаленного репозитория и выберите настройку, которую вы сразу зададите:
  • Configure push — настройка отправки;
    или
  • Настроить получение — настройка получения;

«Противоположную» настройку можно задать позже, командой контекстного меню Настроить отправку... или Настроить получение....

2. Настройка отправки

В диалоге можно настроить URI для отправки и соответствия веток (RefSpecs). Назначение полей:
  • Ветка — текущая извлеченная ветка;
  • URI — если список URI отправки не заполнен, то для отправки используется этот адрес;
  • URI отправки — если в этом списке есть хотя бы один адрес, то для отправки используются адреса из этого списка;
    Важно: Будьте осторожны! Если список URI отправки пуст и URI изменен в этом диалоге, то новый URI будет использоваться также и для операции Получить и слить.
  • Ref mappings — позволяет указать одно или несколько соответствий веток для отправки;

    Соответствия ссылок (RefSpecs) используются в операциях получения и отправки для того, чтобы описать связь между удаленной ссылкой и локальной ссылкой. Каждое соответствие отображается в формате <локальная ссылка>:<удаленная ссылка>. Ему может предшествовать знак "+", который обозначает режим принудительного обновления. Например:

    HEAD:refs/heads/master

    Это значит, что текущая извлеченная ветка (HEAD) будет отправлена в ветку master удаленного репозитория (refs/heads/master).

    • Добавить... — открывает небольшой диалог, который помогает создать соответствие ссылок.
    • Вставить... — добавляет в список готовое обозначение соответствия из буфера обмена;
    • Дополнительно... — открывает диалог, который помогает создать и отредактировать сразу несколько соответствий;
      • All branches — добавляет соответствия для отправки один в один локальных веток в удаленный репозиторий;
      • All tags — добавляет соответствия для отправки один в один локальных меток в удаленный репозиторий;
      • Чтобы создать произвольное соответствие ссылок, выберите ссылки в полях Source ref, Destination ref и нажмите + Add Spec;
      • Чтобы удалить ссылку в удаленном репозитории, выберите ее в поле Remote ref to delete и нажмите х Add Spec. Отправка такой спецификации удалит указанную ссылку в удаленном репозитории.
      • Если вы добавите несколько конфликтующих между собой соответствий, они будут выделены красным. Чтобы избавиться от конфликта, удалите или отредактируйте какие-нибудь из них.
    • Сохранить и отправить — сохранить изменения и немедленно отправить;
    • Сохранить — сохранить изменения и не отправлять;
    • Dry-Run — отправить и не сохранять изменения;
    • Восстановить — отменить изменения;
    • Отмена — отказаться от настройки отправки.

3. Настройка получения

В диалоге можно настроить URI для получения и соответствия веток (RefSpecs). Назначение полей:
  • Ветка — текущая ветка, в которую будут получены изменения;
  • URI — адрес удаленного репозитория;
  • Ref mappings — позволяет указать одно или несколько соответствий веток для получения;

    Соответствия веток (RefSpecs) используются в операциях получения и отправки для того, чтобы описать связь между удаленной ссылкой и локальной ссылкой. Каждое соответствие отображается в формате <удаленная ссылка>:<локальная ссылка>. Ему может предшествовать знак "+", который обозначает режим принудительного обновления. Например:

    +refs/heads/*:refs/remotes/origin/*

    Это значит, что все локальные ветки удаленного репозитория (refs/heads/*) будут получены в соответствующие ветки удаленного отслеживания, расположенные в вашем локальном репозитории (refs/remotes/origin/*). При этом данные в ветках удаленного отслеживания будут принудительно обновлены (+).

    • Добавить... — открывает небольшой диалог, который помогает создать соответствие ссылок.
    • Вставить... — добавляет в список готовое обозначение соответствия из буфера обмена;
    • Дополнительно... — открывает диалог, который помогает создать и отредактировать сразу несколько соответствий;
      • All branches — добавляет соответствия для получения один в один локальных веток из удаленного репозитория;
      • All tags — добавляет соответствия для получения один в один локальных меток из удаленного репозитория;
      • Чтобы создать произвольное соответствие ссылок, выберите ссылки в полях Source ref, Destination ref и нажмите + Add Spec;
    • Сохранить и получить — сохранить изменения и немедленно получить;
    • Сохранить — сохранить изменения и не получать;
    • Dry-Run — получить и не сохранять изменения;
    • Восстановить — отменить изменения;
    • Отмена — отказаться от настройки получения.