Git在将更新合并到我的子树时感到困惑
我们以前在主存储库中使用了许多子模块,但为了提高项目的可维护性,我们启动了一个实验分支,在那里我们用子树替换了所有子模块 这很有效——但现在当我尝试更新其中一个子树时,它错误地将更新合并到一个完全错误的目录中,而这个目录甚至不是子树 分支“子树”包含实验分支的主存储库是:git://github.com/hugowetterberg/goodold_drupal.git 要从中合并更新的存储库:git://github.com/voxpelli/drupal-oembed.git 通过执行以下操作进行合并:git merge-s子树oembed/master 更新应合并到的路径:sites/all/modules/oembed/ 它们合并到的路径:模块/aggregator/translations/Git在将更新合并到我的子树时感到困惑,git,merge,git-subtree,subtree,Git,Merge,Git Subtree,Subtree,我们以前在主存储库中使用了许多子模块,但为了提高项目的可维护性,我们启动了一个实验分支,在那里我们用子树替换了所有子模块 这很有效——但现在当我尝试更新其中一个子树时,它错误地将更新合并到一个完全错误的目录中,而这个目录甚至不是子树 分支“子树”包含实验分支的主存储库是:git://github.com/hugowetterberg/goodold_drupal.git 要从中合并更新的存储库:git://github.com/voxpelli/drupal-oembed.git 通过执行以下操
任何人都知道如何将更新放入子树或错误是什么吗?不幸的是,这是“git merge-s子树”代码中的一个bug(或缺少的功能)。它实际上猜测您要合并的子树。通常,这会神奇地证明是正确的,但是如果子树包含很多更改(或者最初是空的,或者其他什么),那么它可能会失败 解决此问题的最佳方法是:
git commit-a——修改
以更正合并提交--prefix
参数,可以让您覆盖它,但不幸的是,它目前不起作用(因为它需要处理“git merge-s subtree”特性,而且还没有时间这样做)
无论如何,这应该是一种罕见的情况,即使将来合并同一个项目,也不需要解决方法。git版本1.7.9.5
git pull -s subtree <remote name> <remote branch>
git pull-s子树
(合并进入了错误的目录)
git重置——硬头^
git pull-s subtree-Xsubtree=correct/directory
请注意,目录上没有尾随斜杠
git reset --hard HEAD^
git pull -s subtree -Xsubtree=correct/directory <remote name> <remote branch>
谢谢
我刚刚向git提交了一个补丁,允许您使用“-Xsubtree=”选项显式覆盖子树,并被接受。在git 1.7.0左右的版本中寻找它。当你从源repo引入一个文件夹(例如
git read tree--prefix=dest/-u source\u repo/master:folder\u in\u repo/
)而不是整个文件夹时,将即使是很小的更改合并回repo似乎也会导致整个文件夹被放置到repo中的一个新位置(即重复)(事实上,这是git出错时最痛苦的合并。尝试-X subtree=XX
帮助了我,谢谢大家。这让我发疯了,因为幸运的是,我第一次做子树实验时,就自然而然地遇到了这个bug。)。