Объединить два репозитория git, сохраняя всю историю коммитов - PullRequest
2 голосов
/ 10 мая 2011

У меня есть два репозитория 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

Обратите внимание, что в Repo 1 версия 5 основана на версии 4, но в Repo 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 Ответ

1 голос
/ 10 мая 2011

Взгляните на 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.

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