Как объединить две ветки из двух разных репозиториев в одном хранилище?
Структуры моих репозиториев Git выглядят следующим образом:
A-B-C-D-E-F # master branch in separate repo1
A-B-C-D-E-G-H # master branch in separate repo2
A-H - простые коммиты. Как вы видите, репозитории связаны (repo2 является fork repo1). Я пытаюсь объединить эти два репозитория в одном.
Затем один репозиторий должен иметь следующую структуру:
A-B-C-D-E-F # master branch of previous repo1
\
\
G-H # master branch of previous repo2
Я уже много времени читал в руководстве пользователя Git и так далее. Однако этот (специальный) случай использования нигде не документируется.
Ответы
Ответ 1
Вы можете обрабатывать другой репозиторий git в той же файловой системе, что и удаленное репо.
В первом случае сделайте следующее:
git remote add <name> /path/to/other/repo/.git
git fetch <name>
git branch <name> <name>/master #optional
Теперь они оба ветки в одном репозитории. Вы можете переключаться между ними с помощью git checkout, merge with git merge и т.д.
Ответ 2
Ваша фотография предполагает, что вы действительно не хотите "объединять два репозитория" столько, сколько слияние фиксирует G и H в repo1. Вы должны сделать что-то так же просто, как добавить repo2 в качестве удаленного для repo1 и извлечь/вытащить изменения.
Ответ 3
Я думаю, что Джим прав. Также имейте в виду, что если две команды совершают точно такой же патч /diff против кода, они будут иметь точно такой же хэш SHA1. Таким образом, A-E должен иметь один и тот же SHA1 в обоих репозиториях, поэтому не должно быть проблемой слияния друг с другом и сохранить объединенное репо в качестве единственного репо для продвижения вперед.
Вы можете настроить на repo1 ветвь отслеживания для repo2, а затем сохранить их таким образом и задержать слияние, когда захотите.