我们一直在尝试让git-subtree处理一个项目(使用 git 版本 1.7.9.4)并且遇到了一些复杂情况。几个月前,其他人使用此命令添加了子树:
git subtree add --prefix=foo git@example.com:foo.git master
现在已经有了实质性的更改foo
,我们希望合并这些更改,理想情况下将它们压缩。自从导入以来,没有任何文件被修改过。
我尝试了三件事来尝试合并更改。
第一的:
git subtree pull --squash -P foo git@example.com:foo.git master
抛出异常:Can't squash-merge: 'foo' was never added.
第二:
git subtree pull -P foo git@example.com:foo.git master
这可行(有点),但存在拉入所有提交的问题,并且与已修改的文件发生冲突。
最后,我尝试了这个:
git pull --squash -s subtree git@example.com:foo.git master
这给了我想要的结果,输出Automatic merge went well; stopped before committing as requested
和所有文件都显示为已修改(具有正确的内容)。
理想情况下,我想继续使用第一个git-subtree
版本并获得接近最后一个版本的输出。如果我们必须始终使用最后一个版本,我们会,但我有点困惑为什么最后一个不会产生合并冲突,而中间一个会产生合并冲突。
任何帮助表示赞赏。