首先让我解释一下情况。 前一段时间我有硕士和功能分支。然后在构建master分支并将其发送到生产之后,我将功能分支与主分支合并。所以我现在只有主分公司。很多提交后,我收到了将修复/功能添加到生产中的代码的请求。所以我找到了在与功能分支合并之前的特定变更集,我需要添加某些代码,但仍保留在主分支中。
现状:
master --1-------o--P--X----2--o--o--o--*
\ /
feature o--o--o--o--o--o
Changeset P是正在生产的,并且X是我需要添加修复并再次推送到生产的地方。在那之后,我需要我的提示包含所有+ X。
所以在master分支中我必须:
使用此存储库状态,我们可以将构建推送到生产。完成此操作后,我需要添加今天所做的所有更改并与这些新更改合并,以便我得到:
现在我可以继续处理所有更改。
我使用的是Mercurial,但我并不精通它。
我欢迎任何见解或帮助。
祝你好运
答案 0 :(得分:0)
如果我说得对,那么你想要的第一部分就在这个图表中表示:
release-2 --------F'
/
master --o--o--P--o--m--o--o--tip
/
/
feature --o--F--o--o
其中P是用于生产的变更集,F是您希望移植到生产版本的功能,m是分支的合并。
以这种方式移植变更集称为cherry picking。这样做的一种方式是:
然后F'就是你的新版本(经过测试后)。
我不明白你问题的第二部分,你显然想将东西移到F'上。为什么不从当前的提示继续工作?您的下一个版本将在未来的某个变更集中被作为主人的另一个分支。
我建议你在真正做之前尝试一下测试回购。 [学习如何使用任何新的hg命令都是如此。]
答案 1 :(得分:0)
用简单的话说:
tip
(某种程度上)tip
与“旧”提示合并(master
的第2位)在Mercurial命令中
hg up X
hg commit -m "description of change"
hg archive PATH/TO/ARCHIVE_FOR_PROD
hg merge
(没有-r
,因为你在分支中合并两个头)hg resolve
(如果需要用于解决冲突,互动合并将是更好的选择)hg commit -m "Merge added feature"
答案 2 :(得分:0)
为我解决这个问题是:
所以在第2步之后,我得到了生产+修复的所有代码。然后我使用第3步回到原来的状态,并将变更集与修复程序合并。所以最后我得到了所有带有功能+修复的代码。