git checkout --orphan second
git pull second second # во второй репе ветка называется second
git switch master
git merge second --allow-unrelated-histories
# решаю конфликты
Эти манипуляции можно заменить одной командой
git pull second second --allow-unrelated-histories
Результат будет идентичный.
хочу указать у коммита 0f6a3f0 родительским коммитом d5c58d8
Коммиты в гите неизменяемы. Если изначально родителя не было, то вы не прицепите его постфактум. Но вы можете пересадить ветку second на вершину master, пересобрав коммиты заново.
Чтобы получить что вам хочется, следует действовать иначе:
git fetch second # скачать все коммиты из второго репо
git switch second # перейти в ветку second
git rebase master # пересобрать ветку second с вершины ветки master
dropping 0f6a3f0 third, "two" -- patch contents already upstream
Successfully rebased and updated refs/heads/second.
git switch master # вернуться в master
git merge second --no-ff # влить second в master
Получим:
git log --oneline --graph
* 13dddb5 (HEAD -> master) Merge branch 'second'
|\
| * 515f80e (second) fourth, "three"
|/
* d5c58d8 second, "two"
* fcc376b first, "one"
Коммит
third, "two" исчез из истории (дропнут) во время rebase, так как он полностью повторяет состояние
second, "two"
Но если вам надо действительно последовательную историю, то не надо создавать коммит слияния. Не используйте ключ --no-ff в последней команде. Это просто установит указатель master на вершину.
И получится линейная история
git log --oneline --graph
* 515f80e (HEAD -> master, second) fourth, "three"
* d5c58d8 second, "two"
* fcc376b first, "one"