2012-12-27 4 views
5

ローカルマシンにいくつかの変更をリベースしようとしています。Mercurialで不変チェンジセットを再構築するにはどうすればよいですか?

abort: can't rebase immutable changeset 110e73ed65a4 
(see hg help phases for details) 

そして私は私がrebaseingてるチェンジの相(相変化が成功のようです)に変更した後も同じエラーが出ます:私はエラーを取得しています。使用:

hg phase -f -d REV 

を私はチェンジセットの中チェンジのすべてを変えることができる方法があれば、私は、もしそうなら、私は行方不明、まだ不変ですよ歴史の中でのチェンジがあるかどう思って、としています歴史は単一のコマンドで変更可能です。

また、不変のチェンジセットでもリベースを強制する方法はありますか?

+0

複数のチェンジセットを指定する方法については、http://www.selenic.com/mercurial/hg.1.html#revsetsをご覧ください。 'hg phase -f -d REVA :: REVB'です。あなたが好きなように '--force'フェーズができたとしても、Mercurialはあなたが祖先が秘密か草案である公開チェンジセットを持つことができないようにします。 'hg phase -f -d REV'とタイプすると、コマンドを入力する前に' REV'と*すべての祖先が公開されていなければなりません。コマンドは 'REV'だけを変更します。一方、単一の 'hgフェーズ-f -d BASE_REV'はすべての子孫にも影響し、' hg rebase'は動作するはずです。 – Ein

答えて

5

公開されているリベース変更は、very bad ideaとみなされます。 phasesのポイントは、まだプッシュされていない変更(つまり変更可能)とプッシュされた変更(つまり変更不可能なもの)を追跡することです)。 rebase documentationから:。

You should not rebase changesets that have already been shared with others. Doing so will force everybody else to perform the same rebase or they will end up with duplicated changesets after pulling in your rebased changesets.

それは(もチェリーピッキングとして知られている)グラフトでそれら変更またはgraftマージのいずれかにましだ一の以上のチェンジし、あなたの現在のブランチにコピーし、それらを取ります。

+2

私の経験では、チェンジセットはプッシュされずに不変であるとみなすことができます。 2つのローカルマシンが互いの間で変更を取り込んでいる場合、それらは "プッシュ"とみなすことができます。 – Arvid

+0

Rebaseは '--keep'オプションをサポートしています。このようにリベースされたコミットには、移植とは異なるメタデータが含まれています。 – user2864740

関連する問題