【问题标题】:hg equivalent of git add -p?hg 相当于 git add -p?
【发布时间】:2011-12-07 13:44:29
【问题描述】:

是否存在与 git add -p 等效的变量?

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

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

【问题讨论】:

标签: git mercurial git-add


【解决方案1】:

看看record extension(与 Mercurial 捆绑在一起)。

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

【讨论】:

  • “此扩展已被弃用,该功能现在作为 hg commit --interactive 成为 Mercurial 核心的一部分。”
  • 这个答案现在不再相关,使用hg commit --interactive
【解决方案2】:

Record Extension 是执行此操作的标准工具。它允许您选择是否包含在提交中。一旦你在你的 hgrc 中启用了扩展,命令就是

hg record

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

hg crecord

编辑:

  1. 由于approx v3.4,不再需要记录扩展名。现在各种命令支持 -i--interactive 标志。例如:

    hg commit -i
    

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

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

    [ui]
    interface = curses
    

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

【讨论】:

    【解决方案3】:

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

    [ui]
    interface = curses
    

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

    hg commit --interactive
    

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 搁置方法的优点是您可以在提交之前测试您的更改。
      • +1 Laurens,当我执行 'git add -p' 时,我总是在猜测哪些更改子集将形成一个工作提交,然后使用错误输入该猜测- 易于手动处理。自找麻烦。
      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2012-04-17
      • 2012-06-24
      • 2016-12-11
      • 1970-01-01
      • 2021-05-28
      • 2019-12-29
      相关资源
      最近更新 更多