backout
のように聞こえます。参照:
hg help backout
私はそれが一度に複数のコミットを取り消すことができるとは思わないので、あなたがそれらを個別にバックアウトする必要があります。
hg backout D
hg backout C
hg backout B
これはDその上に3つのコミットを作成します。これらのコミットを1つのチェンジセットに結合する場合は、rebase --collapse
または他のいくつかの拡張子(例えば、histedit
またはmq
またはcollapse
の拡張子)のいずれかを使用してそれらを折り畳むことができます。あなたは、個々の変更をバックアウトしたいが、一度にすべてを行わない場合は、次の操作を行うことができ
:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
それは醜いですが、それは動作します。しかし、これは逆の名前を記録しません。正直言って、私はこれを行うことをお勧めしません。あなたがバックアウトする必要がある場合は、個々のバックアウトコマンドが入力するのが面倒すぎるので、バックアウトが本当にあなたがその特定の場合。
また、JimとRafaelが提案したように、B、C、Dがブランチ上にあると判断し、Aに更新してそこにコミットを続ける(その時点で履歴を分割する)ことができます。これはより適切かもしれません。
これはDがHEADの場合のみです。 hgにはガベージコレクションがないので、B、C、Dは失われません。 Dは、あなたが押し込めるかしないかの頭のままになります。 – DanMan