mercurial - 如何更新到当前未命名分支的末尾?

标签 mercurial

认为 hg update(不带参数)会将我移动到当前[未命名]分支的末尾*,但我相信如果另一个是较新的,这不是我想要做的。

* 我故意避免使用“tip”这个词,因为“tip”指的是最新版本,无论该命名分支是否有两个或多个头。

我举一些例子。

     2       4 (tip)
      o------o
     /
o---o
     \
      o---o
     1    3

我位于 1,但我想更新到 3(我所在分支的末尾)。如果我输入不带参数的 hg update ,它实际上会出错,并显示消息“abort:交叉分支( merge 分支或更新 --check 以强制更新)”。在某些情况下,它甚至可能会说“中止:不是线性更新( merge 或更新--检查以强制更新)”,但我不太确定是什么触发了这一点(如果您知道,请告诉我)。

如果我执行hg update --check,它会将我移动到4(当前命名分支的尖端),这也不是我想要的。

我可以检查 hg log 以找出 3 的变更集,然后找出 hg up 3,但我想在一个命令,因为尝试理解日志是乏味的。

也许revsets可能有用,但我不知道哪一个对我有帮助。

那么,如何更新到当前未命名分支的末尾?

最佳答案

普通hg update尝试将您带到 4(而不是 3),因为它总是尝试将您带到所请求分支上的最新(技术上“最尖端”)修订版,或 default如果未指定。因此,无论您处于 0、1 还是 3,hg update 都没有关系。总是说take me to 4与上图(假设所有修订都在同一个命名分支上)。

您的修订集将您带到当前版本的最大后代是很棒的,但是如果您发现自己在同一个命名分支上的多个头之间导航,请经常考虑在每个头上放置一个书签。书签就像一个在提交时自动前进的标签,因此如果您这样做:

hg bookmark -rev 3 mybranch
hg checkout mybranch

您最终会得到“书签”mybranch随着新的子变更集的添加,它将始终向前推进,并且您始终可以使用 hg checkout mybranch 返回它

关于mercurial - 如何更新到当前未命名分支的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172888/

相关文章:

mercurial - 如何克隆存储库并保留文件时间戳?

mercurial - 有没有办法在 hg unshelve -i 输出中手动应用差异?

Mercurial 相当于 git reset HEAD,还是 hg addremove 的反面?

Mercurial:改变阶段会产生什么后果?

Mercurial 将文件名更改为大写并且不跟踪它们

mercurial - Mercurial : How to fold local commits in the middle of the stack

eclipse - 从源代码管理打开现有项目

Mercurial merge/删除功能分支

mercurial - 我应该将我的存储库作为我网站的 DocumentRoot 吗?

version-control - Mercurial 钩子(Hook)没有正确执行