我们一直在尝试在项目中使用 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
哪个会抛出异常:无法合并压缩:'foo'从未添加过。
其次:
git subtree pull -P foo git@example.com:foo.git master
这个方法(有点)可行,但存在一个问题,即拉取了所有提交并且与已修改文件有冲突。
最后,我尝试了这个:
git pull --squash -s subtree git@example.com:foo.git master
这样做可以得到我想要的结果,输出为自动合并进行良好;在请求停止提交之前停止
,所有文件都显示为已修改(内容正确)。
理想情况下,我想继续使用第一版本的git-subtree
并获得接近最后一个版本的输出。如果我们必须始终使用最后一个版本,那么我们就会这样做,但我有点困惑为什么最后一个版本不会产生合并冲突而中间版本会。
感谢任何帮助。