gpt4 book ai didi

Git,从另外两个分支(B和C)创建本地分支(A),然后在没有C文件的情况下从A merge 到B

转载 作者:太空狗 更新时间:2023-10-29 14:24:32 24 4
gpt4 key购买 nike

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

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

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

谢谢。

最佳答案

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

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

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

自测试分支与当前分支的共同祖先以来,这个从测试分支中挑选(复制到当前分支)的非 merge 提交列表:

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

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

关于Git,从另外两个分支(B和C)创建本地分支(A),然后在没有C文件的情况下从A merge 到B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10292912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com