Создание ответвления проекта¶
По возможности рекомендуется работать в общем репозитории и использовать стратегию ветвления для управления рабочим процессом. Однако, если пользователь не имеет прав на запись в репозиторий, в который хочет вносить изменения, можно создать ответвление.
Ответвление — это индивидуальная копия репозитория и всех его веток, которую вы создаете в пространстве имен по своему выбору. Внесите изменения в сделанное ответвление и отправьте его через запрос на слияние в репозиторий, в который у вас нет доступа.
В проекте, созданном с помощью ответвления, используется стратегия дедупликации, чтобы он занимал меньше места, чем исходный. Такие проекты могут иметь доступ к пулу объектов, связанных с исходным проектом.
Создание ответвления проекта¶
- На странице проекта в правом верхнем углу нажмите Форк.
- При необходимости в поле Название проекта отредактируйте название проекта.
- В списке Выберите пространство имён выберите пространство имен, к которому должно принадлежать ответвление проекта.
- В поле URL проекта укажите префикс проекта. Это значение станет частью URL проекта, ответвление которого создается. Это значение должно быть уникальным в рамках используемого пространства имен.
- При необходимости в поле Описание проекта (необязательно) добавьте описание проекта.
- В разделе Ветки для включения укажите, копировать ли все ветки или только ветку по умолчанию.
- В разделе Уровень видимости выберите уровень доступа для ответвления.
- Нажмите Форкнуть проект.
Система создаст ответвленный проект и переадресует пользователя на его страницу.
Обновление ответвления проекта¶
Ответвленный проект может рассинхронизироваться с родительским репозиторием и потребуется его обновление:
- Вперед: созданный ответвленный проект содержит новые коммиты, отсутствующие в родительском репозитории. Чтобы синхронизировать его, создайте запрос на слияние, чтобы выгрузить изменения в родительский репозиторий.
- Назад: родительский репозиторий содержит новые коммиты, которые отсутствуют в ответвленном проекте. Чтобы синхронизировать, скачайте новые коммиты в ответвленный проект.
- Вперед и назад: как родительский, так и ответвленный проекты содержат новые коммиты, отсутствующие друг в друге. Чтобы полностью синхронизировать ответвленный проект, создайте запрос на слияние, чтобы выгрузить ваши изменения, и скачайте новые изменения из родительского репозитория в ответвленный проект.
Чтобы синхронизировать ответвленный проект с родительским, обновите его из интерфейса Системы или используя командную строку.
Из пользовательского интерфейса¶
- Выберите Искать или перейти к....
- Выберите Посмотреть все мои проекты.
- Выберите ответвленный проект, который необходимо обновить.
- Под выпадающим списком для названия ветви найдите информационное поле Форкнут из, чтобы определить, находится ли ваше ответвление впереди, позади или и там, и там.
Если ваше ответвление находится впереди родительского репозитория, выберите Создать запрос на слияние, чтобы предложить добавление изменений вашего ответвления в родительский репозиторий.
Если ваше ответвление находится позади родительского репозитория, выберите Обновить форк для получения изменений из родительского репозитория.
Если ваше ответвление находится впереди и позади родительского репозитория, то обновление из пользовательского интерфейса возможно только при отсутствии конфликтов слияния:
- Если ваше ответвление не содержит конфликтов слияния, вы можете выбрать опцию Создать запрос на слияние, чтобы предложить отправить свои изменения в родительский репозиторий — опцию Обновить форк, чтобы перенести изменения в свое ответвление, или оба варианта. Тип изменений в вашем ответвлении определяет, какие действия будут уместны.
- Если ваше ответвление содержит конфликты слияния, обновите его из командной строки.
Из командной строки¶
Чтобы обновить ответвление из командной строки, сначала убедитесь, что для него настроен удаленный upstream-репозиторий:
- Клонируйте свое ответвление локально, если вы еще не сделали этого.
-
Просмотрите все удаленные репозитории, настроенные для вашего ответвления.
git remote -v -
Если ваше ответвление не имеет удаленного репозитория, указывающего на исходный репозиторий, используйте один из этих примеров для настройки удалённого репозитория с именем upstream:
# Используйте эту строку, чтобы установить любой репозиторий в качестве upstream после редактирования <upstream_url> git remote add upstream <upstream_url>Проверив, что локальная копия имеет дополнительно настроенный remote, вы можете обновить свое ответвление.
-
В локальной копии убедитесь, что вы сделали check out ветки по умолчанию, заменив main на имя вашей ветки по умолчанию:
git checkout mainЕсли Система обнаружит unstaged изменения, закоммитьте или отложите (stash) их перед продолжением работы.
-
Загрузите (fetch) изменения в вышестоящий репозиторий:
git fetch upstream -
Перенесите изменения в свое ответвление с помощью команды pull, заменив main на имя обновляемой ветки:
git pull upstream main -
Внесите изменения в свое ответвление на сервере с помощью команды push:
git push origin main