Подтвердить что ты не робот

Как объединить две ветки из двух разных репозиториев в одном хранилище?

Структуры моих репозиториев 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 и так далее. Однако этот (специальный) случай использования нигде не документируется.

4b9b3361

Ответ 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, а затем сохранить их таким образом и задержать слияние, когда захотите.