未压缩变更集的Mercurial修订版/ revset

时间:2013-06-05 17:30:05

标签: mercurial

为包含未刷新的变更集的-r选项指定修订版/ revset的最佳方法是什么,这对于本地克隆或在仅具有已推送的变更集的仓库中创建书签非常有用。

当您需要在工作中间切换到其他尚未准备推进的工作时,通常需要这样做。

3 个答案:

答案 0 :(得分:1)

可以使用一些revset来获取此信息:

  1. first(outgoing())将引用尚未推送到默认推送位置的第一个变更集。

  2. first(!public())将引用尚未推送到任何地方的第一个变更集。

  3. 如果要更新为这些更改集的父级,为新修补程序启动新的匿名分支,则可能需要将这些与p1([set])谓词结合使用。

    此外,在开始修复之前,您可能希望将未完成工作的更改集的阶段设置为secret,以防止意外推送它们。

    您可以使用hg phase --secret --force -r "!public()"执行此操作并使用hg phase --draft -r "secret()"再次切换回来(虽然这会将所有秘密更改集更改为草稿,因此您需要更多特定的,如果您在其他分支上使用阶段)

答案 1 :(得分:0)

如果我理解正确你想要等同于git stash,那么这是作为mercurial的扩展实现的。

查看维基页面。 https://www.mercurial-scm.org/wiki/ShelveExtension

编辑:我不得不提一下,我不使用这个工作流程,在你的情况下我会做一个“dev”分支并定期提交(甚至是WIP提交),当稳定时你可以合并到master。

答案 2 :(得分:0)

如果您需要 revset(s),则必须使用outgoing([path])(或! outgoing([path])作为变更集规范。

[path]是存储库(或别名???)的URL,如果不是默认值

相关问题