Bitbucket Pull Request, где исходное репо является форке, а конечное репо является форком - PullRequest
0 голосов
/ 24 октября 2018

Несколько месяцев назад я раздвоил репо с именем alpha и назвал форк beta.

Все, что я действительно хотел получить, - это копия репо с сохраненной историей коммитов и ссылка на источник.Изменения, вносимые в beta, никогда не предназначались для объединения обратно в alpha;разработка на alpha подошла к концу.

По иронии судьбы мне нужно было протестировать функцию (новый датчик изображения, это проект прошивки) и, говоря коротко, оказалось невозможным протестировать эти аппаратные изменения с помощью beta репо (микропроцессор изменен с alpha на beta).Поэтому я добавил alpha, чтобы написать код для новой функции.

Теперь я хочу перенести изменения, сделанные в ветви функций в alpha (то, что было разветвлено), в основную ветвь beta (вилка).Я знаю, что это обратный путь, к которому предназначены запросы на извлечение.В пользовательском интерфейсе Bitbucket я не могу указать beta в качестве целевого репо при создании запроса извлечения в alpha.Однако, как и ожидалось, я могу создать пул-запрос в beta с пунктом назначения alpha.

Я действительно не хочу прибегать к копированию и вставке кода в мои локальные копии двух репозиториев, потому что я потерял бы историю коммитов в ветви функций в alpha.Есть ли способ (с использованием запросов на удаление или иным образом) вытянуть код из alpha в beta и выполнить коммит слияния?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Хорошо, вот как я это сделал:

cd beta git remote add my_new_remote https://me@bitbucket.org/.../alpha.git git fetch my_new_remote branch_I_want git branch -a

Теперь мы видим remotes/my_new_remote/branch_I_want в ветках, известных моему локальному репозиторию git.

Далее мынеобходимо создать локальную ветку для отслеживания этой новой добавленной удаленной ветви:

git checkout -b my_local_branch my_new_remote/branch_I_want

Теперь у меня есть копия branch_I_want с пульта alpha в моемлокальная копия beta.Отсюда я могу объединить my_local_branch в master и нажать origin_mater из beta.

Слияние прошло следующим образом:

git checkout master git merge my_local_branch

Затем исправьте конфликты слияния и git commit.

Завершите с помощью git push и теперь проверьте битбакет: вся история коммитов с branch_I_want в alpha теперь в beta, и слияние выглядит просто замечательно!

0 голосов
/ 29 октября 2018

Ваше beta репо - это форк, а alpha - это upstream репо для него.Таким образом, если у вас разветвленная из alpha (значит - созданная ветвь, а не ветвь - я прав?), То вам нужно объединить изменения в alpha (через запрос на извлечение или простое объединение);а затем синхронизируйте ваш форк beta и вышестоящий репозиторий (alpha).

Проверьте эту ссылку - https://confluence.atlassian.com/bitbucketserver/keeping-forks-synchronized-776639961.html - там описаны некоторые ручные стратегии для него.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...