18

この回答は、コミットをパッチに降格する方法を示していますが、mq パッチをローカルの変更のみに変換するにはどうすればよいですか?

4

2 に答える 2

25

簡潔な答え

パッチが適用されていることを確認してから、次のようにします。

hg qrefresh nothing
hg qpop --keep-changes
hg qdelete "Name of patch"

長い答え

まず、パッチによって追跡される変更がないことを確認する必要があります。そのためには、

hg qrefresh nothing

nothingリポジトリにない単なるランダムなファイル名です。私は通常hg qref 0、簡潔にするために使用します。hg qrefreshオプションのファイル パターンを受け入れます。それが与えられた場合、パッチはパターンに一致する変更を追跡します - そしてそれらだけです。ファイル パターンに一致するものがない場合、パッチによって変更が追跡されないため、ローカルの変更のみが行われます。

今、役に立たないパッチが横たわっていて、いくつかのローカルな変更があります。クリーンアップするには、次のことができます

hg qpop --keep-changes

ローカルの変更があってもパッチをポップします。最後に、無効で空で適用されていないパッチを削除するには、使用できます

hg qrm "Name of patch"

適用されたパッチは削除できないため、このhg qpop --keep-changes手順が必要です。

(注:hg qrmhg qremoveは のエイリアスですhg qdelete。)

TortoiseHg を使用している場合

TortoiseHg で、パッチをクリップボードにエクスポート (ワークベンチ > パッチを右クリック > エクスポート > パッチのコピー) してから、パッチの適用を解除し、最後に "作業ディレクトリ" を宛先としてクリップボードからインポートするとうまくいくようです。この手順を示すスクリーン キャプチャを次に示します。 ここに画像の説明を入力

于 2012-11-20T14:13:14.917 に答える
7

間違いなくより単純な代替案:

hg qfinish qtip
hg strip -k tip

つまり、パッチを終了してから、その変更を保持したまま結果のコミットを削除します (-kへのオプションstrip)。

于 2014-04-04T18:34:49.347 に答える