Мне нужно объединить два хранилища Git в новый, третий репозиторий. Я выполнил следующие инструкции, и они работают, но результат не тот, который я ожидал. Merge two Git repositories without breaking file historyОбъединить два хранилища Git и сохранить основную историю
Посмотрите на это:
Мастер не выровненным.
- Можно ли объединить все на одном и том же хозяине?
- Я хотел бы иметь чистую историю на хозяине.
Вы можете использовать мой пример репозитория на GitHub:
Это мой слиты результат.
Это ситуация, что я хотел бы иметь: (окрашенный раствор !!!)
Как я попал в ток положение дел:
# Assume the current directory is where we want the new repository to be created
# Create the new repository
git init
# Before we do a merge, we have to have an initial commit, so we'll make a dummy commit
dir > Read.md
git add .
git commit -m "initial commit"
# Add a remote for and fetch the old RepoA
git remote add -f RepoA https://github.com/DimitriDewaele/RepoA
# Merge the files from RepoA/master into new/master
git merge RepoA/master --allow-unrelated-histories
# Do the same thing for RepoB
git remote add -f RepoB https://github.com/DimitriDewaele/RepoB
# Merge the files from RepoB/master into new/master
git merge RepoB/master --allow-unrelated-histories
Вся помощь приветствуется!
UPDATE: ОТВЕТ
Правильный ответ перебазироваться, вместо слияния.
Код:
# Rebase the working branch (master) on top of repoB
git rebase RepoB/master
# Rebase teh working branch (master with RepoB) on top op repoA
git rebase RepoA/master
Одна проблема остается. Второе репо потеряет родительское представление. Я отправил последующий вопрос для этого: Merge two Git repos and keep the history
Не могли бы вы объяснить более подробно, что вы ожидали и как это изменилось? –
У вас есть все на одном хозяине, я не уверен, что вы подразумеваете под «aligned» - попробуйте удалить репозитории RepoA и RepoB из вашего локального, а затем посмотреть, как выглядит граф. – Adrian
Я добавил «расписанное решение» –