首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mercurial (hg)仅提交某些文件

Mercurial (hg)仅提交某些文件
EN

Stack Overflow用户
提问于 2010-03-10 02:33:45
回答 3查看 67.6K关注 0票数 128

我正在尝试使用Mercurial只提交特定的文件。由于hg有自动添加功能,所以每当我尝试提交更改时,它都会提交所有文件。但我不希望这样,因为某些文件还没有“准备好”。

的确有

代码语言:javascript
复制
hg commit -I thefile.foo

但这只适用于一个文件。对我来说,更好的方法是关闭自动添加,就像在Git中一样。这个是可能的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-01 20:48:26

您可以在命令行上指定文件,因为tonfa写道:

代码语言:javascript
复制
$ hg commit foo.c foo.h dir/

这很有效,这也是我一直在做的。您还可以使用您找到的--include标志,并且可以像这样多次使用它:

代码语言:javascript
复制
$ hg commit -I foo.c -I "**/*.h"

您甚至可以使用fileset来选择要提交的文件:

代码语言:javascript
复制
$ hg commit "set:size(1k - 1MB) and not binary()"

没有任何设置可以关闭自动添加行为,并使Mercurial像Git那样工作。但是,mq extension可能会引起人们的兴趣。这是一个高级扩展,但它允许您这样做

代码语言:javascript
复制
$ 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来实现这一目的,因为我认为只需在命令行上指定文件名就足够了。

票数 164
EN

Stack Overflow用户

发布于 2015-02-15 00:25:12

如果要提交几个文件,并排除许多其他文件,请明确列出要提交的文件。只有当你想使用模式而不是文件时,才需要-I

如果您想提交许多文件,而只排除几个文件,那么使用-X会更方便。

例如,给定一个包含"file_1“、"file_2”和"file_3“的存储库,以下内容是等效的,但后者更容易/更快地输入:

代码语言:javascript
复制
hg commit file_1 file_2
hg commit -X file_3
票数 28
EN

Stack Overflow用户

发布于 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中添加以下内容来实现

代码语言:javascript
复制
[ui]
interface = curses
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8188605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档