これを実現する方法の 1 つは、Mercurials の組み込みの「デバッグ」コマンドを使用することです。これらは事実上、Mercurial をデバッグしている場合を除き、使用する必要のないコマンドです。それらを使用すると、理論的にはリポジトリが破壊される可能性があるため、本当に必要な場合はクローンで作業してください。
$ hg help --debug
...
debugsetparents
manually set the parents of the current working directory
このコマンドが行うことは、ご覧のとおり、作業ディレクトリの親を手動で設定できるようにすることです。これを使用して、マージを偽造できます。
したがって、この知識とある程度の注意があれば、次のことができます。
$ hg log --graph
@ 1[tip] Change by A.N.Other
|
o 0 Local Change
$ hg debugsetparents 0 1
$ hg log --graph
@ 1[tip] Change by A.N.Other
|
@ 0 Local Change
$ hg commit -m "Merged"
$ hg log --graph
@ 2[tip] Merged
|\
| o 1 Change by A.N.Other
|/
o 0 Local Change
これは私が通常アドバイスすることではありませんが、「別のブランチ」からいくつかの変更を取得していることを示すことができます。そのブランチが実際に変更の先端にある場合、それが目的だと思います。
また、以下の shambulator のコメントに注意してください - これに の変更を含めるには、1
を実行するときに作業ディレクトリとしてそれを持っている必要がありますdebugsetparents
。もちろん、あなたの計画がそれらの変更を破棄することでない限り、その場合はupdate
、 changesetを変更してから0
、マージを偽造する必要があります。