提交变更集后创建一个 hg 书签

Create a hg bookmark after committing a changeset

我克隆了一个 Mercurial 存储库并在签出的代码中做了一些更改。然后我抓取了这些更改(7 个文件)并使用 hg commit 提交了它们,但没有先创建书签。

这是我的 hg summary 命令的输出:

parent: 8172:b39efc1322fe tip
  Made some changes in my feature
branch: default
commit: 7 modified
update: 2 new changesets, 3 branch heads (merge)
phases: 3 draft

这些更改至少要再过一周才能推送,所以我想切换到新书签并处理代码的其他部分。

问题是我意识到我在没有书签的情况下进行了提交,所以我担心切换到新书签后我提交的更改可能会丢失。

有没有一种简单的方法可以将这些已提交的更改移动到新书签中?

I'm afraid that after switching to a new bookmark my committed changes could be lost.

你怎么能想象这个? OMFG,您将更改提交到存储库(您的克隆),其中包含此更改集(8172:b39efc1322fe)。当|如果你将 svn up 到另一个节点,你只需 更改你的工作目录的父节点 ,在拉动时你将获得“2 个新的变更集”,并且,结果“3 个分支头”- 2 个新的变更集 + 你的提交 8172,这个 b39efc1322fe 将永远是头之一,即使你会在另一个头上工作。

如果你害怕忘记它(怎么会???真的),你可以post-fact书签这个(已提交的)变更集hg bookmark -r b39efc1322fe $WIP && hg commit -m "Bookmarked my work" 以便 hg up $WIP 何时可以继续这一大块更改

根本不需要害怕:Mercurial 不会忘记您提交的任何内容,除非您明确地执行以下两项操作:启用历史编辑扩展并自愿以实际删除一个或多个变更集的方式使用它们。

Mercurial 不是 git 并且 Mercurial 永远不会忘记或垃圾收集当前未签出且没有附加名称(书签)的变更集。

您可以使用 hg heads 向您展示所有头像。您始终可以创建新书签,通过 hg bookmark --rev XXX MyBookmark 附加到任意变更集,其中 XXX 是您要附加书签的变更集 ID。