我们一直试图让git-subtree在一个项目上工作(使用git版本1.7.9.4)并且遇到了一些复杂情况。别人以前添加的子树用这个命令在几个月前:git-subtree pull并发症
git subtree add --prefix=foo [email protected]:foo.git master
现在已经出现了实质性的变化foo
,我们希望在这些变化进行合并,理想的挤压他们的文件无已。自从它们被导入后被修改。
我已经尝试了三件事情来尝试并在变化中合并。
第一:
git subtree pull --squash -P foo [email protected]:foo.git master
会抛出异常:Can't squash-merge: 'foo' was never added.
二:
git subtree pull -P foo [email protected]:foo.git master
这工作(在某种程度上),但在所有提交的拉动问题并与已修改的文件发生冲突。
最后,我想这一点:
git pull --squash -s subtree [email protected]:foo.git master
这给了我想要的结果,与输出Automatic merge went well; stopped before committing as requested
和所有的文件显示为修改(与正确的内容)。
理想情况下,我想继续使用第一个git-subtree
版本,并获得接近最后一个版本的输出。如果我们必须一直使用最后一个版本,那么我们会这么做,但是我对于为什么最后一个版本不会产生合并冲突而中间产生冲突有点困惑。
任何帮助表示赞赏。
我遇到了同样的问题,原因是我在尝试拉动时错过了前缀选项中的子文件夹。将此添加为注释,因为错误消息没有给出任何关于此错误的指示,并且故障排除使我在此处找到了答案。 – 2015-12-08 18:25:57
谢谢,这很有用。我有一个相关的问题,在将子树添加到其中后,我移动了该子目录,这看起来好像让这个匹配成功了 – 2017-01-04 21:20:45