Создание ответвления проекта¶
По возможности рекомендуется работать в общем репозитории и использовать стратегию ветвления для управления рабочим процессом. Однако, если пользователь не имеет прав на запись в репозиторий, в который хочет вносить изменения, можно создать ответвление.
Ответвление — это индивидуальная копия репозитория и всех его веток, которую вы создаете в пространстве имен по своему выбору. Внесите изменения в сделанное ответвление и отправьте его через запрос на слияние в репозиторий, в который у вас нет доступа.
В проекте, созданном с помощью ответвления, используется стратегия дедупликации, чтобы он занимал меньше места, чем исходный. Такие проекты могут иметь доступ к пулу объектов, связанных с исходным проектом.
Создание ответвления проекта¶
-
На странице проекта в правом верхнем углу нажмите Ответвления.
-
При необходимости в поле Имя проекта отредактируйте название проекта.
- В поле Адрес проекта выберите пространство имен, к которому должно принадлежать ответвление проекта.
- В поле URL проекта укажите префикс проекта. Это значение станет частью URL проекта, ответвление которого создается. Это значение должно быть уникальным в рамках используемого пространства имен.
- При необходимости в поле Описание проекта добавьте описание проекта.
- В разделе Уровень доступа выберите уровень доступа для ответвления.
- Нажмите Ответвить проект.
Система создаст ответвленный проект и переадресует пользователя на его страницу.
Обновление ответвления проекта¶
Ответвленный проект может рассинхронизироваться с родительским репозиторием и потребуется его обновление:
- Вперед: созданный ответвленный проект содержит новые коммиты, отсутствующие в родительском репозитории. Чтобы синхронизировать его, создайте запрос на слияние, чтобы выгрузить изменения в родительский репозиторий.
- Назад: родительский репозиторий содержит новые коммиты, которые отсутствуют в ответвленном проекте. Чтобы синхронизировать, скачайте новые коммиты в ответвленный проект.
- Вперед и назад: как родительский, так и ответвленный проекты содержат новые коммиты, отсутствующие друг в друге. Чтобы полностью синхронизировать ответвленный проект, создайте запрос на слияние, чтобы выгрузить ваши изменения, и скачайте новые изменения из родительского репозитория в ответвленный проект.
Чтобы синхронизировать ответвленный проект с родительским, обновите его из интерфейса Системы или используя командную строку.
Из пользовательского интерфейса¶
- Выберите Поиск и переход... слева в меню.
- Выберите Посмотреть все мои проекты.
- Выберите ответвленный проект, который необходимо обновить.
- Под выпадающим списком для названия ветви найдите информационное поле Ответвлено от, чтобы определить, находится ли ваше ответвление впереди, позади или и там, и там. В данном примере ответвление находится и позади, и впереди родительского репозитория.
Если ваше ответвление находится впереди родительского репозитория, выберите Создать запрос на слияние, чтобы предложить добавление изменений вашего ответвления в родительский репозиторий.
Если ваше ответвление находится позади родительского репозитория, выберите Обновить форк для получения изменений из родительского репозитория.
Если ваше ответвление находится впереди и позади родительского репозитория, то обновление из пользовательского интерфейса возможно только при отсутствии конфликтов слияния:
- Если ваше ответвление не содержит конфликтов слияния, вы можете выбрать опцию Создать запрос на слияние, чтобы предложить отправить свои изменения в родительский репозиторий — опцию Обновить форк, чтобы перенести изменения в свое ответвление, или оба варианта. Тип изменений в вашем ответвлении определяет, какие действия будут уместны.
- Если ваше ответвление содержит конфликты слияния, обновите его из командной строки.
Из командной строки¶
Чтобы обновить ответвление из командной строки, сначала убедитесь, что для него настроен удаленный вышестоящий родительский upstream репозиторий:
- Клонируйте свое ответвление локально, если вы еще не сделали этого.
-
Просмотрите все удаленные репозитории, настроенные для вашего ответвления.
git remote -v
-
Если ваше ответвление не имеет удаленного репозитория, указывающего на исходный репозиторий, используйте один из этих примеров для настройки remote с именем 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