1. ホーム
  2. version-control

[解決済み] Mercurial (hg) は特定のファイルだけをコミットする

2022-07-16 05:42:11

質問

Mercurialで特定のファイルのみをコミットしようとしています。 hg には自動追加機能があるため、変更をコミットしようとすると、すべてのファイルをコミットしたがります。しかし、あるファイルはまだ "ready"ではないので、私はそれを望みません。

があります。

hg commit -I thefile.foo

といった感じですが、これは1つのファイルに対してのみです。私にとってより良い方法は、Gitのように自動追加をオフにすることができればいいのですが。これは可能でしょうか?

どのように解決するのですか?

tonfaさんが書いているように、コマンドラインでファイルを指定することができます。

$ hg commit foo.c foo.h dir/

これだけでうまくいくので、私はいつもそうしています。また --include というフラグを見つけて、このように何度も使うことができます。

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

を使うこともできます。 ファイルセット を使ってコミットしたいファイルを選択することもできます。

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

自動追加動作をオフにして、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を使うことはあまりないのですが。