Mercurialでのマージを中止する方法は?


85

私はマージを間違えました。元に戻してからもう一度やり直したいのですが。
コミットされる前にマージを元に戻す方法はありますか?

hg revert私が望むことをしません、それはファイルのテキストを元に戻すだけです。Mercurialは、マージの2回目の試行を中止し、元のマージがまだコミットされていないことを訴えます。

hg mergeコマンドの後、コミットされる前にマージを元に戻す方法はありますか?


回答:


106

hg update -C <one of the two merge changesets>


シンプルで効率的、そして私が思うに、それを行うための最良の方法です!:D
Eric-Karl

@JonL。-はい、--cleanはの同義語です-C。どのチェンジセット.が参照するかはわかりませんが、常に2つのマージされたチェンジセットの1つになります。
オムニファリアス2012年

3
@Omnifarious、クリーニング.は、マージを開始する前に行っていたリビジョンまでクリーニングする必要があります。したがって、r42にいて、r43とのマージを試み、失敗し、クリーンアップした場合は、元のr42に戻ります。
Jon L.

2
hg update --clean作品は、のように.暗黙のデフォルトのようです-それはだ、明示的に文書化されていませんけれども。
Joel Purra 2012

@JoelPurra:.マージのコンテキストでの意味はかなりあいまいです。
オムニファリアス2012

39

実行後、実行hg mergehg commitに、作業コピーには2つの親があります。最初の親はマージ前に更新した変更セットであり、2番目の親はマージする変更セットです。Mercurialはhg merge、作業コピーに2人の親がいる限り、再度実行することはできません。

続行する方法には2つのオプションがあります。

  1. マージを中止して開始した場所に戻りたい場合は、

    hg update -C .
    

    これにより、作業コピーが最初の親と一致するように更新され.ます。常に、作業コピーの最初の親を示します。

  2. 一部のファイルを再マージする場合は、

    hg resolve fileA fileB
    

    これにより、以前と同じようにマージツールが再起動しますhg mergehg mergeマージツールが正しく構成されていないことが判明した場合は、resolveコマンドが適していますhg resolve --all。構成を修正して実行します。hg resolveマージに満足するまで、何度でも実行できます。

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