Kev*_*Dog 203 mercurial branch dvcs
我们现在有一个"stiging"分支,其中"staging"似乎是一个更好的语义契合.处理这个问题的好策略是什么?
Ell*_*ron 217
更新到stiging
分支并从中创建一个新分支.然后关闭旧分支.
综上所述:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
Run Code Online (Sandbox Code Playgroud)
ale*_*xis 60
对于未来的读者:使用rebase
扩展,您可以使用相同的父级创建一个新分支,stiging
并将整个分支历史记录移动到它,如下所示:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Run Code Online (Sandbox Code Playgroud)
这假设stiging
只有一个父母.当然,您可以使用显式修订号.
注1:如果分支stiging
包含与其他分支的合并,我认为这将保留它们,只要staging
并且stiging
具有相同的父分支.但我当然会仔细检查.
注意2:由于这会编辑历史记录,因此旧分支不会简单地从克隆的存储库中消失(请参阅rebase
文档).除非每个人都能重新克隆,否则对于大型团队而言,这可能不是一个非常实用的解决方案.
Note3/Edit(由@JasonRCoombs提供):现在这些阶段是mercurial中的标准,rebase
将拒绝修改已经推送的变更集.要么通过将阶段更改回草稿(with hg phases
)来欺骗它,要么让旧分支保持原样,只需制作一个正确命名的副本(例如,使用`hg rebase --keep').
这会修改历史记录并且仅适用于高级 Mercurial 用户。如果您不知道这意味着什么,请不要这样做。
如果stiging仅是局部的,你可以把它改成与组合分期移植物和条。首先更新到 stiging 分歧的祖先变更集。创建 staging 分支并将每个提交从 stiging 移植到 staging。分期现在应该是 stiging 的副本。最后,通过剥离其第一次提交来破坏 stiging。
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58588 次 |
最近记录: |