Mercurial(hg)は特定のファイルのみをコミットします


119

Mercurialで特定のファイルのみをコミットしようとしています。変更をコミットしようとするたびにhgが自動追加するため、すべてのファイルをコミットする必要があります。しかし、特定のファイルはまだ「準備ができていない」ので、私はそれを望まない。

有る

hg commit -I thefile.foo

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


5
レコード拡張子を使用しますか?または、コマンドラインでファイルを指定できますhg ci foo bar baz
tonfa

4
@tonfa、回答としてコメントを再投稿
Andrei Dziahel

あなたの投稿を破壊しないでください。
Glorfindel

なぜあなたはそのような素晴らしい質問を荒らしているのですか?
Praveen Kumar Purushothaman 2016

回答:


155

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()"

自動追加動作をオフにし、GitのようにMercurialを動作させる設定はありません。ただし、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を実際に使用することはありません。


「自動追加動作」の動作は何ですか?hgはファイルの自動追加に使用されましたか?これは、明示的に行う必要があるためです。そうしないと、追跡されなくなります。
mpen 2018

1
@mpen彼は、変更されたファイルを次のコミットに手動で追加する必要があるgitとは異なり、ghがすべての変更されたファイルをコミットに自動的に追加し、一部の変更されたファイルをコミットしないままにできる方法を意味すると思います
simpleuser

24

いくつかのファイルをコミットし、他の多くのファイルを除外する場合は、コミットするファイルを明示的にリストします。-Iファイルの代わりにパターンを使用したい場合にのみ必要です。

多くのファイルをコミットし、少数のファイルのみを除外する場合は、を使用する-X方が便利です。

たとえば、「file_1」、「file_2」、および「file_3」を含むリポジトリが与えられた場合、以下は同等ですが、後者の方が入力が簡単/高速です。

hg commit file_1 file_2
hg commit -X file_3

8

3.8以降では、を使用hg commit --interactiveしてファイルを選択することもできます(3.8以前では、同様の機能にcrecord拡張機能を使用できます)。--interactive(または単に-i)フラグを使用すると、コミットに含めたいファイルのプロンプトを表示するHG原因となります。追加のボーナスとして、ファイル内のチャンクを含めたり除外したりすることもできます。

インターフェースの例を以下に示します。これは(実際にはcrecordの)古いスクリーンショットであるため、インターフェースが若干変更されています(ただし、基本は同じです)。 crecordのスクリーンショット

このインターフェースを取得するには、cursesインターフェースを有効にする必要があります。hg commit --config ui.interface=curses --interactive次のコードをに追加するか、一般的に次の行を追加することで、1回の実行でそれを行うことができます.hgrc

[ui]
interface = curses
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.