是否有 mercurial 等价物git add -p
?
引用 man,带有选项 -p (或 --patch)的 git-add 执行以下操作:
在索引和工作树之间以交互方式选择补丁块并将它们添加到索引中。这使用户有机会在将修改的内容添加到索引之前查看差异。
查看记录扩展(与 Mercurial 捆绑在一起)。
请注意,由于 Mercurial 没有像 git 这样的暂存区域的概念,因此运行hg record
只会让您逐块检查工作副本中的修改。您选择记录的任何更改都将被提交,您选择不记录的任何更改都只是作为修改留在您的工作副本中。
Record Extension是用于此目的的标准工具。它允许您选择是否包含在提交中。在 hgrc 中启用扩展后,该命令就是
hg record
CRecord 扩展在此之上为您提供了一个 TUI(文本用户界面),它允许您深入到要包含的行。不过这不是标准的,因此需要先将其下载到目录中,然后才能在 hgrc 中启用它。
hg crecord
编辑:
从v3.4开始,不再需要 Record 扩展。现在各种命令都支持-i
or--interactive
标志。例如:
hg commit -i
...会逐个询问您要包含的内容。
CRecord 将其作为核心功能进入 3.8。将以下内容添加到您的
.hgrc
[ui]
interface = curses
现在,--interactive
命令将显示与旧的 CRecord 扩展相同的界面。
从 Mercurial 3.8.1 开始,crecord 扩展是内置的。.hgrc
确保你的contains中的“ui”部分interface = curses
,否则你会得到一个不舒服的问答界面。
[ui]
interface = curses
然后以交互方式进行您的提交,以询问您要在该提交中包含哪个块或哪一行。
hg commit --interactive
如果您使用的是 TortoiseHg,它有一个Shelve
功能可以让您存储您不想提交到临时区域的更改。它允许大块选择,就像 git 一样。
在 TortoiseHg Workbench 中,可以通过 2 种方式访问此工具:
Repository -> Shelve
Commit
窗口中,选择搁置工具图标。它看起来像这样: