3

我开发 Magento 模块,我有两个 repos,第一个是我的模块,另一个是 Magento 本身。我将我的模块 repo 克隆到目录,然后将 Magento repo 添加为远程,并将两个分支合并到一个名为 testing 的本地分支中。它工作正常。但是在开发时,我需要在编辑器中打开两个项目(模块和 Magento),所以我在测试分支中编辑代码,然后我需要提交这些更改。但是我不能只将测试合并到模块分支,因为我在测试分支中有 Magento 文件,而我在模块分支中不需要这些文件。

有没有办法在没有来自 magento 分支的文件的情况下合并从测试到模块分支的更改?

子模块和子树不起作用,因为我的分支与其根目录重叠,模块不仅仅是 magento 分支的子目录。

谢谢。

4

1 回答 1

0

你真的想将你的测试分支合并到你的模块分支吗?即使 Magento 文件在您寻求的合并后不会出现,所有 Magento 历史都将与您的模块分支的历史密不可分。这可能不是你想要的。

如果您真的想要合并,您可以编写自己的合并策略或使用git merge --no-commit手动删除模块分支中不需要的 Magento 文件并提交结果合并。如果手动删除工作量太大,您可以git revert -n -m1 <unwanted-merge-id>改用。

我建议的更清洁的解决方案是挑选并重新创建测试分支。您总是将 Magento 分支合并到您的测试分支中,我假设您在测试中没有其他合并。

这个从测试分支中挑选(复制到当前分支)的非合并提交列表,因为它与当前分支的共同祖先:

git rev-list --reverse --first-parent --no-merges ..testing | git cherry-pick --stdin

然后您可以摆脱旧的测试分支,因为它包含不必要的合并,并且其内容与您的模块分支相同。您可以在模块分支的顶部再次启动它。从您的测试分支调用git reset --hard module中——但请确保您事先没有未提交的更改,因为它们会丢失!

于 2013-11-04T14:25:19.540 回答