Возможно, я не до конца понимаю, как работает git merge -s subtree , но когда я его использую, я всегда получаю ошибку «роковая: отказ от слияния несвязанных историй». (Я следовал следующему уроку)

У меня есть следующий пример настройки проекта.

repo/ -- main repo
lib/ -- lib repo

Я поместил lib в репозиторий с помощью команды git read-tree --prefix=dir -u lib/master . Затем я обновляю репозиторий lib. Наконец, я пытаюсь вернуть изменения в репозиторий / с помощью git merge -s subtree lib/master и получить эту ошибку.

Я понимаю, что могу игнорировать ошибку с --allow-unrelated-histories но это бесполезно, потому что это приведет к конфликту слияния.

Вот полный список команд, которые я выполнил, чтобы воссоздать проблему. Это воссоздает те репозитории с данными коммитов.

[~]$ mkdir lib-remote repo
[~]$ cd lib-remote/
# Create the remote repo for lib
[~/lib-remote]$ git init --bare
[~/lib-remote]$ git clone . ~/lib
[~/lib-remote]$ cd ~/lib
# Create the local lib repo and commit something
[~/lib]$ touch file
[~/lib]$ git add file
[~/lib]$ git commit -m 'Initial commit'
[~/lib]$ git push -u origin master
[~/lib]$ cd ~/repo
# Create the main repo, brings the lib repo into it, and commits.
[~/repo]$ git init
[~/repo]$ git remote add lib ~/lib-remote
[~/repo]$ git fetch lib
[~/repo]$ git read-tree --prefix=dir -u lib/master
[~/repo]$ git add -A
[~/repo]$ git commit -am 'Initial commit'
[~/repo]$ cd ~/lib
# Commit a change to the lib repo
[~/lib]$ echo revision >> file
[~/lib]$ git commit -am 'Revision'
[~/lib]$ git push
[~/lib]$ cd ~/repo
# Attempt to merge those changes into the main repo
[~/repo]$ git merge -s subtree lib/master

0