2012-01-18 15 views
1

作業ディレクトリのコミットされていない変更に単一のコミット(ローカルリポジトリのヒントチェンジセットなど)を変換する方法はありますか?
hg stripは、指定されたチェンジセットを削除して元に戻しますが、それらのチェンジセットを作業ディレクトリのコミットされていない変更に変換しますか?Mercurialでコミットされたチェンジセットをコミットされていない変更に変換する

EDIT:hg rollbackの使用に関する

hg rollbackを実行する前にコミットされていない変更があった場合はどうなりますか?それらを最初にコミットする必要がありますか?最後のいくつかのコミットはどうですか?シーケンシャルhg rollbackはコミットから既存のコミットされていない変更に変更されますか?

答えて

7

あなたは(おそらくより良いおそらく固定のバグで、メッセージをコミットして)最後のコミットをやり直すしようとしているなら、あなたは今、最後に更新する

$ hg commit --amend

を使用する必要がありますコミット。これは、後述のhg rollbackを使用するよりもはるかに安全です。

をコミットした場合は、最後にはをコミットしている、あなたははどこでも、あなたはhg rollbackを使用することができます更新していません。 hg help rollbackを読んでください - 潜在的に破壊的なコマンドですか。

説明:hg rollbackは、最後のtransactionをあなたのリポジトリにロールバックします。 hg commithg pullhg 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しかありません。

+0

「hgロールバック」を実行する前にコミットされていない変更がある場合はどうすればよいですか?それらを最初にコミットする必要がありますか?最後のいくつかのコミットはどうですか?シーケンシャルな 'hgロールバック'はコミットから既存のコミットされていない変更に変更を加えますか? –

+0

ロールバックは作業コピーには触れません。これは、作業コピーの追加の変更がチェンジセットの変更と共に表示されることを意味します。まるで 'hg commit'と入力しなかったかのようです。いくつかのコミットを変更することはもう一つのトピックです。[Rollback multiple commits](http://stackoverflow.com/q/4925094/110204)と[Updating Commit Message](http://stackoverflow.com/a/8503002/110204)を参照してください。 。 –

+0

コミットメッセージを修正したい特定のケースでは、おそらく 'hg commit --amend'がおそらくより有用であることに言及する価値があります。この答えが書かれてから、それはMercurial 2.2に追加されました。 –

1

どれチェンジ(またはチェンジセットのセット)より簡単にはMercurial Queuesでローカルな変更に変換することができます(倍|展開チェンジ)

TortoiseHG-centric manual(旧GUI用)ショー操作ステップ・バイ・ステップ

0

が、可能であればhg commit --ammendを使用してください。新しい、より強力なmecurial履歴編集機能が好きです:hg histedit特にgitに精通している方。

hg out(つまり、プッシュされていないリビジョンを選択する)を実行するだけで、戻すリビジョンを確認できます。

関連する問題