Mercurial(hg)只提交某些文件

我试图只提交与Mercurial某些文件。 由于hg有自动添加,每当我尝试提交一个更改它想要提交所有文件。 但是我不希望这样,因为某些文件还没有“准备好”。

hg commit -I thefile.foo 

但这只是一个文件。 对我来说更好的办法是,如果我可以closures自动添加在Git中。 这可能吗?

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

 $ hg commit foo.c foo.h dir/ 

这只是工作,这就是我一直在做的事情。 你也可以使用你find的--include标志,你可以像这样多次使用它:

 $ hg commit -I foo.c -I "**/*.h" 

您甚至可以使用文件集来select要提交的文件:

 $ hg commit "set:size(1k - 1MB) and not binary()" 

没有设置可以closures自动添加行为,使Mercurial像Git一样工作。 但是, mq的延伸可能是有趣的。 这是一个高级的扩展,但它可以让你做到

 $ 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来达到这个目的,因为我认为只要在命令行中指定文件名即可。

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

如果你想提交很多文件,并且只排除几个文件,使用-X会更方便。

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

 hg commit file_1 file_2 hg commit -X file_3 

正如这个堆栈溢出问题所build议的,最简单的方法是使用hg shelve