---
title: "Совместная работа и слияние версий - Проекты и MQL5 Algo Forge - Справка по MetaEditor"
description: "Форк создает вашу собственную копию чужого репозитория под вашей учетной записью. Это позволяет безопасно экспериментировать и... - Совместная работа и слияние версий - Проекты и MQL5 Algo Forge - Справка по MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_merging"
---

[Справка по MetaEditor](https://www.metatrader5.com/ru/metaeditor/help) → [Проекты и MQL5 Algo Forge](https://www.metatrader5.com/ru/metaeditor/help/mql5storage) → Совместная работа и слияние версий

# Совместная работа и объединение изменений в MQL5 Algo Forge

## Создание форков [#](#forking_projects)

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

На сайте MQL5 Algo Forge можно [просматривать публичные](https://forge.mql5.io/explore/repos) проекты пользователей MetaTrader 5 со всего мира. Выберите интересующий проект и нажмите «Ответвление» (Fork) в правом верхнем углу.

![Создание форка проекта](https://www.metatrader5.com/i/help/metaeditor/ru/fork_project_website.png)

При создании форка можно изменить название, выбрать ветки для копирования и отредактировать описание. Затем нажмите «Создать ответвление» (Fork repository).

![Варианты создания форка](https://www.metatrader5.com/i/help/metaeditor/ru/fork_options_website.png)

Созданный репозиторий появится в вашем аккаунте MQL5 Algo Forge. В MetaEditor обновите содержимое папки [Shared Projects](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects#shared) — а ней появится созданная копию. Чтобы начать работать с файлами проекта локально, необходимо [клонировать](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_merging#cloning_projects) репозиторий.

## Клонирование проектов [#](#cloning_projects)

Клонирование загружает репозиторий из MQL5 Algo Forge на локальный компьютер. В результате создается локальная рабочая копия, в которой можно редактировать файлы и создавать коммиты, а затем отправлять изменения в удаленный репозиторий.

> Клонировать можно только те репозитории, к которым у вас есть права на запись в MQL5 Algo Forge. Если вы хотите работать локально с файлами публичного проекта, сначала [создайте его форк](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_merging#forking_projects), а затем клонируйте свою копию.

В MetaEditor раскройте раздел Shared Projects, щелкните правой кнопкой мыши на проекте и выберите команду «Клонировать репозиторий Git».

![Клонирование проекта](https://www.metatrader5.com/i/help/metaeditor/ru/git_clone_project.png)

## Создание запросов на слияние [#](#creating_pull_requests)

Pull request (запрос на слияние) — это предложение проверить и объединить готовые изменения из отдельной ветки с целевой веткой. Запрос также служит площадкой для обсуждения: участники проекта могут просмотреть код, оставить комментарии и протестировать изменения перед их принятием.

Наиболее распространенные сценарии:

- Если вы работали в отдельной ветке собственного проекта, создайте запрос на слияние (pull request), чтобы объединить изменения с основной веткой.

- Если вы работали в какой-либо ветке форка, создайте pull request, чтобы объединить изменения с основной веткой исходного проекта. После этого один из сопровождающих проекта должен проверить и принять запрос.

Откройте страницу репозитория с нужными изменениями, выберите «Слияния», а затем нажмите «Создать запрос».

![Страница сравнения веток](https://www.metatrader5.com/i/help/metaeditor/ru/new_pull_request_website.png)

На странице «Создать запрос» выберите ветку, в которую должны попасть изменения, и ветку, из которой нужно их перенести. Различия между выбранными ветками будут подсвечены. Нажмите «Создать запрос», чтобы продолжить.

![Страница сравнения веток](https://www.metatrader5.com/i/help/metaeditor/ru/branch_comparision_pull_request_website.png)

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

![Страница с вариантами отправки запроса на слияние](https://www.metatrader5.com/i/help/metaeditor/ru/pull_request_options_website.png)

Нажмите «Создать запрос на слияние», чтобы завершить действие.

## Слияние изменений [#](#merging_changes)

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

На сайте MQL5 Algo Forge откройте запрос на слияние, который хотите объединить. На вкладках «Коммиты» и «Измененные файлы» можно проверить коммиты и внесенные изменения, после чего вернуться на вкладку «Обсуждение».

![Страница с вариантами слияния изменений](https://www.metatrader5.com/i/help/metaeditor/ru/merge_pull_request_options_website.png)

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

> Доступные варианты слияния:Создать коммит слияния — объединяет ветки, создавая отдельный коммит слияния (merge), который связывает обе истории изменений. В графе истории при этом сохраняется информация о том, когда ветка была создана и когда ее изменения были объединены.Выполнить rebase и fast-forward — сначала переносит коммиты вашей ветки в конец целевой ветки, а затем перемещает указатель целевой ветки вперед. В результате получается линейная история без дополнительных коммитов на слияние.Выполнить rebase и создать коммит слияния — сначала переносит коммиты вашей ветки в конец целевой ветки, а затем создает отдельный коммит на слияние. История остается линейной, при этом в ней явно фиксируется факт слияния.Создать объединяющий коммит — объединяет все коммиты вашей ветки в один коммит перед добавлением изменений в целевую ветку. Это удобно, если нужно скрыть многочисленные промежуточные коммиты, созданные в процессе работы.Только fast-forward — выполняет слияние только в том случае, если целевая ветка не получила новых изменений с момента начала вашей работы. Если целевая ветка была изменена, слияние не выполняется, и сначала необходимо синхронизировать ветки вручную.

## Разрешение конфликтов [#](#resolving_conflicts)

Для разрешения конфликтов необходимо [использовать внешний Git-клиент](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_external_client) или выполнять команды Git в терминале.

### Конфликты при получении и отправке изменений в MetaEditor

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

- Конфликт содержимого (edit–edit) — другой разработчик, работающий в той же ветке, изменил ту же строку кода, что и вы.
- Структурный конфликт (delete–modify) — другой разработчик удалил или переименовал файл, который вы изменили.
- Конфликт бинарных файлов — другой разработчик изменил тот же бинарный файл, например изображение или PDF. Git не может сравнивать бинарные файлы построчно, поэтому не способен автоматически объединить такие изменения.
- Конфликт «папка–файл» — в одной ветке файл был удален и вместо него создана папка с таким же именем, а в другой ветке этот файл продолжили использовать и изменять.

При возникновении конфликта содержимого (edit–edit) во время получения изменений в MetaEditor или другом Git-инструменте Git автоматически добавляет в файл специальные маркеры конфликта: <<<<<<<, ======= и >>>>>>>.

Как разрешить простой конфликт во внешнем Git-клиенте:

1. Найдите конфликтующий файл — откройте Git-клиент и определите, какие файлы содержат конфликты.
2. Выберите способ разрешения конфликта:

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

   Отредактируйте и сохраните файл — вручную измените конфликтующий фрагмент так, чтобы в файле осталась нужная итоговая версия. Удалите маркеры конфликта и ненужный код, затем сохраните файл.Добавьте изменения и создайте коммит — Git-клиент должен определить, что файл изменен. Добавьте файл в индекс (или отметьте конфликт как разрешенный), а затем создайте коммит, чтобы завершить слияние.Отправьте изменения в удаленный репозиторий — отправьте созданный коммит с результатом разрешения конфликта в удаленную ветку.

### Конфликты при слиянии на сайте MQL5 Algo Forge

Конфликт Git может возникнуть и при попытке объединить две ветки непосредственно на сайте MQL5 Algo Forge. В этом случае также потребуется [внешний Git-клиент](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_external_client) или командная строка на вашем компьютере:

1. Обновите локальный репозиторий — откройте Git-клиент, получите последние изменения из удаленного репозитория и переключитесь на целевую ветку, в которую вы пытаетесь внести изменения.
2. Воспроизведите конфликт локально — запустите в Git-клиенте такое же слияние. В результате должен возникнуть тот же конфликт, из-за которого слияние не удалось выполнить на сайте MQL5 Algo Forge.
3. Разрешите конфликт — Откройте затронутые файлы в текстовом редакторе или IDE. Найдите маркеры конфликта, вручную объедините изменения или выберите нужную версию, полностью удалите маркеры и сохраните файлы.
4. Добавьте изменения и создайте коммит — Добавьте исправленные файлы в Git-клиент, чтобы отметить конфликты как разрешенные, и создайте коммит для завершения слияния.
5. Отправьте изменения в удаленный репозиторий — Отправьте созданный коммит с результатом разрешения конфликта в удаленную ветку. После этого сайт MQL5 Algo Forge автоматически обнаружит, что конфликт устранен, и вы сможете выполнить слияние.

## In this section

- [Подключение MQL5 Algo Forge](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_connect)
- [Создание и работа с проектом](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/projects)
- [Работа с MQL5 Algo Forge](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_working)
- [Просмотр истории проекта](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_diff)
- Совместная работа и слияние версий
- [Внешний клиент Git](https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_external_client)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help", "name": "Справка по MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help/mql5storage", "name": "Проекты и MQL5 Algo Forge"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_merging", "name": "Совместная работа и слияние версий"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Совместная работа и слияние версий", "acceptedAnswer": { "@type": "Answer", "text": "Форк создает вашу собственную копию чужого репозитория под вашей учетной записью. Это позволяет безопасно экспериментировать и вносить изменения..." } }] }
```
