在 Mercurial 分支之间移动未暂存 + 未提交的更改

Moving unstaged + uncommitted changes between Mercurial branches

我克隆了一个 Mercurial 存储库并做了很多本地工作,忘记为上述工作创建一个功能分支。

正常流量为:

  1. 克隆
  2. 创建分支
  3. 切换到那个分支
  4. 在那个分支做你的工作
  5. 推送那个分支
  6. 代码审查
  7. 如果代码审查通过,合并分支 w/ default(本地)
  8. 将合并的更改推送到 default
  9. 关闭功能分支

所以我需要创建一个新分支,将我所有的 unstaged/uncommitted 代码更改(对 default 所做的)移植到这个分支(这样 default 现在是干净的并且新分支包含我的更改),然后推送我的功能分支。

我通过 hg branch new_feature 创建了新分支。但是在阅读了 Merucrial 文档之后,我想不出下一步。

所以我问:我如何移动(不仅仅是复制)我所有的 unstaged/uncommitted 更改从 default 到我的 new_feature 分支)?

你不应该做任何特别的事情。

您未提交的工作文件夹更改是流动的,您可以在提交前设置分支名称,而不会丢失您的更改。

如果您使用的是命令行,只需执行以下操作:

hg branch feature-X
hg commit -m "Added feature X"

如果您使用的是 TortoiseHg,只需单击提交消息输入字段正上方的 "Branch: default" 按钮和 select "Open a new named branch" 并为其命名,然后单击确定,然后提交正常。

设置提交期间要使用的分支名称实际上并不会更改您的工作文件夹,它不会进行更新,除了在元数据中记录分支名称应该是什么外,它什么都不做。

另请注意,这将只允许您创建一个要提交的新分支。如果您想 继续 在现有分支上,您首先需要更新到该分支的头部,这可能会导致您的工作文件夹发生变化。但是,如果您想创建一个新分支,则不需要这样做。