#git
#git
Вопрос:
У меня есть два репозитория git, каждый из которых содержит разные версии одной и той же кодовой базы.
Коммиты в репозитории 1 (самые последние из последних):
version 1
version 2
version 3
version 4
version 5
Коммиты в репозитории 2:
version 3
commit that isn't a new version
another commit that isn't a new version
yet another commit that isn't a new version
version 5
Обратите внимание, что в репозитории 1 версия 5 основана на версии 4, но в репозитории 2 версии 4 нет, поскольку версия 5 действительно была основана на версии 3 (а версия 4, по сути, стала заброшенной веткой).
Я бы хотел поместить все это в одно репозиторий:
version 1
version 2
version 3
branch version 4
commit that isn't a new version
another commit that isn't a new version
yet another commit that isn't a new version
version 5
Я был бы признателен, если бы кто-нибудь мог объяснить не только как это сделать, но и почему правильно делать это таким образом, чтобы я мог лучше понять git.
Ответ №1:
Взгляните на git rebase --preserve-merges --onto
. После того, как вы перенесете коммиты из второго репозитория в первый, вы можете переместить части истории, чтобы иметь нужного вам предка.
Надеюсь, это поможет.
Редактировать:
Чтобы получить изменения из второго репозитория, добавьте его как удаленный:
git remote add secondary <url to your secondary repo>
Затем вы можете извлекать оттуда:
git fetch secondary
Теперь вы можете проверять с помощью gitk --all
или git log --all --graph --decorate --oneline
и делать с rebase --onto
что хотите.
Комментарии:
1. Вероятно, вам следует указать, как извлекать коммиты из второго репозитория в первый; это сделало бы этот ответ потрясающим.