コマンドが必要hg rollback
ですが、Mercurial 2.2 以降を使用している場合は以下を参照してください。
rollback コマンドは、リポジトリから最後のトランザクションを削除します。コミットはトランザクションなので、これを次のように使用できます。
% hg commit -m 'My elaburate bugfix.' foo.c foo.h
% hg rollback
% hg commit -m 'My elaborate bugfix.' foo.c foo.h
ロールバック後、ファイルは再び変更されたものとして表示されます。これは、2 回目のコミットが最初のコミットと同じ変更を保存することを意味しますが、コミット メッセージはより適切になります。
注意: hg rollback
単純な「コミット解除」機能よりも強力で、注意しないと作業を破棄するために使用できます。コミットを捨てるには
$ hg commit -m 'My big and very difficult bugfix'
$ hg pull --update
$ hg rollback
最後に行ったコミットが失われ、作業コピーを別のリビジョンに更新したため、そのコミットの変更はなくなりました。hg rollback
そのため、コミットを元に戻すために使用するのは、それhg commit
が実際に作業コピーを操作した最後のコマンドであることが確実な場合に限るべきです。
また、コマンド ラインでコミット メッセージを指定していない場合は、ロールバック後に上矢印を 2 回押してコミットをやり直すことはできません。ただし、Mercurial 1.5 以降では、最後のコミット メッセージが保存される.hg/last-message.txt
ため、ロールバック後にいつでも見つけることができます。
Mercurial 2.2 には の新しい--amend
フラグがありhg commit
ます。これにより、最後のコミットを新しい変更で修正できます。hg status
ロールバックして再度コミットしたかのように、リストされた変更を親コミットに組み込むだけです。