hg的等价命令是git add -p吗?

47

是否有类似于git add -p的Mercurial等效命令?

从man手册中引用,带有选项-p或--patch的git-add命令执行以下操作:

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


这是新端口之前TortoiseHg的一部分,目前在新端口中尚未实现。请参阅https://bitbucket.org/tortoisehg/thg/issue/188/what-happened-to-change-selection-in-the。 - Lasse V. Karlsen
1
@LasseV.Karlsen:在最新的TortoiseHg中,Shelve功能仍然可用。 可以通过“存储库-> Shelve”菜单或提交窗口中的图标访问它。 - Tim Henigan
可能是Mercurial为提交挑选更改的重复问题。 - Emilio Miralles
4个回答

34
请查看被捆绑在Mercurial中的记录扩展
请注意,由于Mercurial没有像Git那样的暂存区域概念,运行hg record命令将允许您逐个检查工作副本中的修改。您选择记录的任何更改都将被提交,而您选择记录的更改则会保留在您的工作副本中作为修改。

该扩展已被弃用,该功能现在已成为Mercurial核心的一部分,使用hg commit --interactive命令即可。 - user162988
3
现在这个回答已不再适用,应该使用 hg commit --interactive 命令。 - Baptiste Mille-Mathias

26

记录扩展是这方面的标准工具。它允许您选择要包含或不包含在提交中的块。一旦在您的hgrc中启用了该扩展,命令就是:

hg record

CRecord Extension可以为您提供一个TUI(文本用户界面),让您能够选择要包含的行。但这不是标准功能,所以您需要将其下载到目录中,然后才能在hgrc中启用它。

hg crecord

编辑:

  1. The Record extension is no longer necessary since approx v3.4. Now various commands support the -i or --interactive flag. For example:

    hg commit -i
    

    ...will ask you hunk by hunk what you want to include.

  2. CRecord made it in to 3.8 as a core feature. Add the following to your .hgrc

    [ui]
    interface = curses
    

    Now, --interactive commands will bring up the same interface as the old CRecord extension.


21

从Mercurial 3.8.1版本开始,crecord扩展程序已经内置。请确保你的.hgrc文件中的“ui”部分包含interface = curses,否则会得到一个令人不舒服的问答界面。

[ui]
interface = curses

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

hg commit --interactive

8
如果你正在使用TortoiseHg,它有一个“Shelve”功能,可以将不想提交的更改存储到一个临时区域。它允许像git一样选择差异。在TortoiseHg Workbench中,可以通过以下两种方式访问此工具:
1. 点击“Repository -> Shelve” 2. 在“Commit”窗口中,选择Shelve工具图标,它看起来像这样:enter image description here

4
使用 shelve 方法的优点是您可以在提交之前测试您的更改。 - Laurens Holst
1
+1 Laurens,每次执行“git add -p”时,我总是在猜测哪些更改会形成一个可用的提交集合,然后使用容易出错的手动过程输入这个猜测。这样做很危险。 - Jonathan Hartley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接