Mercurial (hg) commit only certain files

前端 未结 3 734
失恋的感觉
失恋的感觉 2020-12-07 16:20

I\'m trying to commit only certain files with Mercurial. Because of of hg having auto-add whenever I try to commit a change it wants to commit all files. But I don\'t want t

3条回答
  •  抹茶落季
    2020-12-07 16:52

    You can specify the files on the command line, as tonfa writes:

    $ hg commit foo.c foo.h dir/
    

    That just works and that's what I do all the time. You can also use the --include flag that you've found, and you can use it several times like this:

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

    You can even use a fileset to select the files you want to commit:

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

    There is no setting that will turn off the auto-add behavior and make Mercurial work like Git does. However, the mq extension might be of interest. That's an advanced extension, but it allows you do to

    $ 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
    

    I don't really use MQ for this purpose myself, though, since I think it's enough to just specify the filenames on the command line.

提交回复
热议问题