46

是否有 mercurial 等价物git add -p

引用 man,带有选项 -p (或 --patch)的 git-add 执行以下操作:

在索引和工作树之间以交互方式选择补丁块并将它们添加到索引中。这使用户有机会在将修改的内容添加到索引之前查看差异。

4

4 回答 4

34

查看记录扩展(与 Mercurial 捆绑在一起)。

请注意,由于 Mercurial 没有像 git 这样的暂存区域的概念,因此运行hg record只会让您逐块检查工作副本中的修改。您选择记录的任何更改都将被提交,您选择记录的任何更改都只是作为修改留在您的工作副本中。

于 2011-10-14T11:45:12.893 回答
25

Record Extension是用于此目的的标准工具。它允许您选择是否包含在提交中。在 hgrc 中启用扩展后,该命令就是

hg record

CRecord 扩展在此之上为您提供了一个 TUI(文本用户界面),它允许您深入到要包含的行。不过这不是标准的,因此需要先将其下载到目录中,然后才能在 hgrc 中启用它。

hg crecord

编辑:

  1. 从v3.4开始,不再需要 Record 扩展。现在各种命令都支持-ior--interactive标志。例如:

    hg commit -i
    

    ...会逐个询问您要包含的内容。

  2. CRecord 将其作为核心功能进入 3.8。将以下内容添加到您的 .hgrc

    [ui]
    interface = curses
    

    现在,--interactive命令将显示与旧的 CRecord 扩展相同的界面。

于 2011-10-14T13:55:27.577 回答
17

从 Mercurial 3.8.1 开始,crecord 扩展是内置的。.hgrc确保你的contains中的“ui”部分interface = curses,否则你会得到一个不舒服的问答界面。

[ui]
interface = curses

然后以交互方式进行您的提交,以询问您要在该提交中包含哪个块或哪一行。

hg commit --interactive
于 2016-05-22T15:11:33.833 回答
8

如果您使用的是 TortoiseHg,它有一个Shelve功能可以让您存储您不想提交到临时区域的更改。它允许大块选择,就像 git 一样。

在 TortoiseHg Workbench 中,可以通过 2 种方式访问​​此工具:

  1. 点击Repository -> Shelve
  2. Commit窗口中,选择搁置工具图标。它看起来像这样:

在此处输入图像描述

于 2011-10-14T13:37:39.810 回答