У меня была очень похожая проблема
Вот как я сначала создал поддерево
git remote add -f sub_project url_to_remote_repository/project.git
git merge -s ours --no-commit sub_project/master
git read-tree --prefix=sub/project/ -u sub_project/master
git commit -m "Added subtree merged in sub/project"
, и чтобы получить изменения из репо "проекта", я делал
git pull -s subtree sub_project master
Теперь я перенес свой локальный репозиторий в github, и с другой машины я клонировал свой репозиторий github. В тот момент я получил все ожидаемые файлы в sub / project ... так что это здорово.Но не более отдаленных, а отношения с саб / проект.Поэтому я сделал следующее
git remote add -f sub_project url_to_remote_repository/project.git
git merge -s ours --no-commit --squash sub_project/master
git pull -s subtree sub_project master
И это сработало нормально.Теперь я могу управлять поддеревом из этого клонированного репозитория, как и раньше
git pull -s subtree sub_project master
Примечание:
1) в нашем проекте, до того как мы использовали подмодули git, что на самом деле было не очень хорошо для нашегопользователи.Вот почему мы переключились на систему поддеревьев git.
2) У меня были некоторые странные ошибки при выполнении этих операций на компьютере под управлением Windows (с использованием git версии 1.7.9.msysgit.0), и те же операции были успешно выполнены в linux.Так что теперь, чтобы манипулировать поддеревом, я часто использую linux (и если у меня есть какая-либо ошибка, я пытаюсь сделать то же самое на linux).
Надеюсь, это поможет.