Git子树拆分+;合并效果很差

Git子树拆分+;合并效果很差,git,git-subtree,Git,Git Subtree,我的代码依赖于现有存储库提供的文件。由于每个文件都需要一些工作,因此我希望在支持这些文件时将其引入,而不是一次添加所有文件。我还想从导入的文件跟踪并向上游提交更改 经过一些阅读git子树分割似乎很有希望,我按照 经过一些修改 git remote add project _URL_ git fetch project 然后 然后 然后 发生的情况是git子树合并似乎忽略了前缀标志,并在项目根文件夹中签出了项目中的路径\u of\u interest\u的内容。导入project/master

我的代码依赖于现有存储库提供的文件。由于每个文件都需要一些工作,因此我希望在支持这些文件时将其引入,而不是一次添加所有文件。我还想从导入的文件跟踪并向上游提交更改

经过一些阅读git子树分割似乎很有希望,我按照

经过一些修改

git remote add project _URL_
git fetch project
然后

然后

然后

发生的情况是git子树合并似乎忽略了前缀标志,并在项目根文件夹中签出了项目中的路径\u of\u interest\u的内容。导入project/master的整个历史记录时,似乎不会执行挤压


这是正确的行为还是Git中的错误?有更好的解决方案来实现我想要的吗?

我看到了与您描述的类似的东西,但不是子树合并将子项目文件放在项目根目录中,而是在您执行无害的、没有规范的旧的
git pull
时发生的

您现在使用的
git remote add
认为子项目是一个有效的上游对等项目,并且正在从中提取。导致意外的东西降落在这里


我目前的解决办法是确保从现在起我只从“源”进行git pull,但在跟踪配置中可能有一个可以恢复预期行为的设置。我试图找到它…

在发现几乎没有其他人有过这个问题之后,我把它缩小到一个事实,我在~/.gitconfig中将
autosetuprebase=always
作为全局默认值。从my.git/config中删除
rebase=true
,可以阻止此问题的发生。完全明白了
git branch project_master project/master
git checkout project_master
git subtree split --squash --prefix=path_of_interest_in_project -b temp_branch
git checkout master
git subtree merge --prefix=directory_destination_path temp_branch