コミットの直前に私の作業コピー(hg status
とhg diff
)を見直すと、私はしばしばいくつかの望ましくない変更に気付きます。たとえば、デバッグセッション中だけ一時的にいくつかのコードを追加または削除した可能性があります。水銀でファイル内のある範囲の行を元に戻すことはできますか?
私はhg revert
を使用して不要な変更を削除できますが、これによりファイル全体のすべての変更が削除されることがわかりました。ファイルの一部を元に戻す方法はありますか?
コミットの直前に私の作業コピー(hg status
とhg diff
)を見直すと、私はしばしばいくつかの望ましくない変更に気付きます。たとえば、デバッグセッション中だけ一時的にいくつかのコードを追加または削除した可能性があります。水銀でファイル内のある範囲の行を元に戻すことはできますか?
私はhg revert
を使用して不要な変更を削除できますが、これによりファイル全体のすべての変更が削除されることがわかりました。ファイルの一部を元に戻す方法はありますか?
一方の方法では、kdiff3
のようなグラフィカルな差分ツールを使用しています。 diffにフィードして「現在のファイルをマージする」を選択すると、行ごとに移動して、必要なものを選ぶことができます。
より良い方法は、より頻繁にコミットすることです。デバッグコードを追加する前にコミットすることを習慣にして、 "実際の"コードを追加する前にデバッグコードをコミットまたは元に戻すと、独自のリビジョンがあるのでデバッグコードを簡単に削除できます。あるいは、デバッグコードを別のブランチに置くこともできます。
+1私は[hg kdiff3]コマンドを有効にするために[これらの命令](http://mercurial.selenic.com/wiki/KDiff3)に従いました。そして、私は "Merge - Merge thisファイル "メニュー項目を選択します。 2つのバージョンのどちらを選択するかを選択するために右クリックのコンフリクトが必要であることがわかりましたが、うまくいくようです。私はこれを試してみましょう。 –
「マージカレントファイル」はパズルの欠けていた部分でした。まことにありがとうございます。 –
TortoiseHg GUIの「コミット」ウィンドウには、コミットするファイルの変更の特定のセクションを選択できる「ハンク選択」タブがあります。
..しかし、それはHunkベースの復帰を持っていません。 – user2864740
@ user2864740、ファイルを元に戻し、保持したいハンズをコミットしてください。 –
私はあなたの問題に対して別の答えを得ました。これは私と同じ問題です。これはmercurial queuesの優れた使用例です。
私は準備ができていると思うの変化にデバッグコードの追加を開始しようとしていたとき、私は次のようにします。
hg qnew -m "fix for bug #123" fix.patch # basically a local-only commit
hg qnew -m "debugging" dbg.patch # prepare the next changeset at the tip
[add my debugging]
hg qrefresh # update the changeset at the tip
[...]
hg qpop # pop the debugging off the repo history
をそれは慣れるの少しを取る - あなたはを有する終わりますパッチの順序を変更して、元の作業パッチに加えた修正を折り畳みます。
また、Bill Barryの屋根裏部屋の延長線をご覧ください。このページでは、いくつかの異なるワークフローで使用する方法と、mqを使用する方法と比較して説明します。あなたと仮定するとhttps://www.mercurial-scm.org/wiki/AtticExtension
私はあなたが歩くと部品を選択することができますインタラクティブなncursesベースのスタイルのUI hg revert -i
でこれを行ってきましたファイル、差分チャンク、または行ごとに破棄したいのですが、変更内容をどの程度深く展開しているかによって異なります。
hg
機能であるかない場合、あなたはそれを持っている場合、あなたは簡単に十分に検証できることを確認していない
:ちょうどあなたがマークの変更(X
)が被爆する内容になることを覚えておいてください
> hg revert --help --verbose | grep -- -interactive
-i --interactive interactively select the changes (EXPERIMENTAL)
あなたが保持するものではありません。
変更を希望するコミットが、
hg meld -r ba1c841aaff4^ <filename>
今、あなたのラインを元に戻すファイルと密接メルドを救うために途中で(右向き)、右矢印をクリックしてください:ba1c841aaff4、 最も簡単に使用することです。 kdiff3(古いものと直感的ではないもの)を別の方法にすることもできます。
サイドノート:
[extdiff]
cmd.meld =
[merge-tools]
meld.args=$base $local $other
類似:http://stackoverflow.com/questions/876763/mercurial-revert-aメルドを使用するためには、あなたが私たちの〜/ .hgrcファイルにそれを設定する必要があります-single-hunk – keturn