【发布时间】:2013-09-25 02:08:49
【问题描述】:
为了我的一生,我无法让git subtree merge 工作。这是我的情况:
我正在开发一个名为 Workshop 的 Moodle 的内置部分。代码位于moodle 目录中的mod/workshop。我必须将我的本地 Moodle 升级到 2.5 并让我的 Workshop 更改在其中工作。所以,对我来说显而易见的解决方案是:
- 从上游检查
MOODLE_25_STABLE分支 - 基于该分支创建一个名为
MOODLE_25_STABLE_workshop的分支 - 将
mod/workshop从我的MOODLE_23_STABLE_workshop分支合并到MOODLE_25_STABLE_workshop
如果我想将MOODLE_23_STABLE_workshop 中的每个文件合并到MOODLE_25_STABLE_workshop 中,那将是简单,但我只想重播我对mod/workshop 目录的提交。有没有比cherry-pick 更简单的方法来完成六个月的提交?因为我真的,真的不想那样做。
我已经尝试过的事情:
$ git subtree merge --prefix=mod/workshop/ MOODLE_23_STABLE_workshop:mod/workshop
error: 402c67f6fedc96a6fed76e663df4e5af9dfa094e: expected commit type, but the object dereferences to tree type
和
$ git merge -s ours --no-commit MOODLE_23_STABLE_workshop
$ git read-tree --prefix=mod/workshop/ -u MOODLE_23_STABLE_workshop:mod/workshop
error: Entry 'mod/workshop/aggregate.php' overlaps with 'mod/workshop/aggregate.php'. Cannot bind.
$ gormster:Documents/moodle$ git read-tree -m --prefix=mod/workshop/ -u MOODLE_23_STABLE_workshop:mod/workshop
fatal: Which one? -m, --reset, or --prefix?
感谢任何指导。
【问题讨论】:
-
没有
git subtree命令。请确保复制并粘贴准确的命令。 -
是的,至少在我的版本中有。我复制并粘贴了确切的命令。 imgur.com/iPUDv3z
-
太棒了。确实有这样的命令,但它没有记录。 official documentation 对此一无所知,尽管该命令存在,但也没有在本地安装它。
-
我会尝试
git subtree merge --prefix=mod/workshop/ MOODLE_23_STABLE_workshop没有其他路径。但这只是一个猜测,很可能无论如何它都行不通。子树合并适用于一个分支只包含子树的情况,而不是两个分支都包含所有内容,但您只想合并对某个部分的更改。 -
对。看起来在我的情况下,我实际上应该使用变基,但这有其自身的问题,我将在一分钟内发布一个问题:P