我正在尝试使用Mercurial只提交特定的文件。由于hg有自动添加功能,所以每当我尝试提交更改时,它都会提交所有文件。但我不希望这样,因为某些文件还没有“准备好”。
的确有
hg commit -I thefile.foo
但这只适用于一个文件。对我来说,更好的方法是关闭自动添加,就像在Git中一样。这个是可能的吗?
发布于 2011-12-01 20:48:26
您可以在命令行上指定文件,因为tonfa写道:
$ hg commit foo.c foo.h dir/
这很有效,这也是我一直在做的。您还可以使用您找到的--include
标志,并且可以像这样多次使用它:
$ hg commit -I foo.c -I "**/*.h"
您甚至可以使用fileset来选择要提交的文件:
$ hg commit "set:size(1k - 1MB) and not binary()"
没有任何设置可以关闭自动添加行为,并使Mercurial像Git那样工作。但是,mq extension可能会引起人们的兴趣。这是一个高级扩展,但它允许您这样做
$ hg qnew feature-x # create new patch
$ hg qrefresh -s foo.c # add a file to the current patch
$ hg qrefresh -s bar.c # add another file to the patch
$ hg qfinish -a # convert applied patches to normal changesets
不过,我自己并没有真正使用MQ来实现这一目的,因为我认为只需在命令行上指定文件名就足够了。
发布于 2015-02-15 00:25:12
如果要提交几个文件,并排除许多其他文件,请明确列出要提交的文件。只有当你想使用模式而不是文件时,才需要-I
。
如果您想提交许多文件,而只排除几个文件,那么使用-X
会更方便。
例如,给定一个包含"file_1“、"file_2”和"file_3“的存储库,以下内容是等效的,但后者更容易/更快地输入:
hg commit file_1 file_2
hg commit -X file_3
发布于 2017-12-22 03:35:21
在3.8版本中,您还可以使用hg commit --interactive
来选择文件(在3.8版本之前,您可以使用crecord extension实现类似的功能)。--interactive
(或仅-i
)标志将使hg提示您要在提交中包含的文件。作为额外的奖励,您甚至可以在文件中包含/排除块。
下面是界面外观的一个示例。请注意,这是一个旧的屏幕截图(实际上是记录的),所以界面略有变化(但基本都是一样的)。
注意:要获得该接口,您需要启用curses接口。您可以使用hg commit --config ui.interface=curses --interactive
进行单次运行,或者通常通过在.hgrc
中添加以下内容来实现
[ui]
interface = curses
https://stackoverflow.com/questions/8188605
复制相似问题