あなたは(おそらくより良いおそらく固定のバグで、メッセージをコミットして)最後のコミットをやり直すしようとしているなら、あなたは今、最後に更新する
$ hg commit --amend
を使用する必要がありますコミット。これは、後述のhg rollback
を使用するよりもはるかに安全です。
をコミットした場合は、最後にはをコミットしている、あなたははどこでも、あなたはhg rollback
を使用することができます更新していません。 hg help rollback
を読んでください - 潜在的に破壊的なコマンドですか。
説明:hg rollback
は、最後のtransactionをあなたのリポジトリにロールバックします。 hg commit
、hg pull
、hg unbundle
などのたびに、新しいトランザクションを作成します。すべてが安全に保存されると、Mercurialはトランザクションを閉じます。トランザクションの途中で問題が発生した場合、Mercurialは復旧できます(hg recover
参照)。 hg rollback
で最後のトランザクションを手動でロールバックすることもできます。コマンドの実行内容のプレビューについては、hg rollback --dry-run
を参照してください。
ロールバックコマンドは作業コピーには触れません。つまり、以前に変更されたファイルが再び表示されるようになります。だからそれは簡単です
$ hg commit -m "Fixed buug-123"
アップは、コミットメッセージでタイプミス!のは、その問題を修正しましょう:
$ hg rollback
$ hg commit -m "Fixed bug-123"
(使用hg commit --amend
代わりのMercurial 2.2以降で。)
最後のメッセージも.hg/last-message.txt
に保存されているコミットあなたがそれを持っていない場合ので、あなたはそこからそれを回復することができますあなたのシェルの歴史。
hgロールバックを実行する前にコミットされていない変更がある場合はどうなりますか?それらを最初にコミットする必要がありますか?
ロールバックは作業コピーには触れません。これは、作業コピーの追加の変更がチェンジセットの変更と共に表示されることを意味します。まるでhg commitをタイプしなかったかのようです。
最後に何回コミットしましたか?シーケンシャルHgロールバックスタックは、コミットから既存のコミットされていない変更に変更されますか?
いいえ、最後の取引のみを追跡しているため、one level of rollbackしかありません。
「hgロールバック」を実行する前にコミットされていない変更がある場合はどうすればよいですか?それらを最初にコミットする必要がありますか?最後のいくつかのコミットはどうですか?シーケンシャルな 'hgロールバック'はコミットから既存のコミットされていない変更に変更を加えますか? –
ロールバックは作業コピーには触れません。これは、作業コピーの追加の変更がチェンジセットの変更と共に表示されることを意味します。まるで 'hg commit'と入力しなかったかのようです。いくつかのコミットを変更することはもう一つのトピックです。[Rollback multiple commits](http://stackoverflow.com/q/4925094/110204)と[Updating Commit Message](http://stackoverflow.com/a/8503002/110204)を参照してください。 。 –
コミットメッセージを修正したい特定のケースでは、おそらく 'hg commit --amend'がおそらくより有用であることに言及する価値があります。この答えが書かれてから、それはMercurial 2.2に追加されました。 –