我有非常相似的问题
这是我最初创建子树的方式
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 上尝试同样的方法)。
希望这能有所帮助。