繁体   English   中英

Git,从另外两个分支(B和C)创建本地分支(A),然后从A到B合并而不包含C文件

[英]Git, create local branch (A) from two other branches (B and C) and then merge from A to B without C files

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

有没有办法将更改从测试合并到模块分支而没有来自magento分支的文件?

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

谢谢。

您真的想将测试分支合并到模块分支吗? 即使您正在寻求合并后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 - 但请确保您事先没有未经修改的更改,因为它们会丢失!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM