2011-07-29 8 views
0

コミットされていない変更を含む作業ディレクトリがあり、別のブランチに更新されました。変更されたファイルをすべてマージするプロセスの途中で、これは私がやりたいことではないことに気付きました。これから回復する方法はありますか?それが再び起きないようにする方法はありますか?Mercurial:ブランチ更新マージ中に中止する

Mercurialのバージョン1.8.4

コマンドがhg update defaultた実行。

私が入っていたブランチは、デフォルトブランチの子でした​​。デフォルトの子から最後の子への最後のマージ以降、デフォルトのブランチに変更はありませんでした。

+0

私はMercurialがブランチを越えて更新することはできないと考えましたが、1.5.4しかないので新しいかもしれません。 – Neil

+0

@Neil:別のブランチに切り替える別の方法はありますか? – nmichaels

+0

@ Neeil:最近ブランチがマージされている場合(コミットされていない変更のみが唯一の違いです)、Mercurialはマージしてコミットされていない変更を移動します。 –

答えて

1

これは、作業コピーにコミットされていない変更を保持する危険性があります。 Mercurialは作業コピーの変更を記録しません。あなたは、ファイルそのものに頼らざるを得ません。

あなたがあればそれを回復することが可能であり得る:

  1. バックアップ
  2. hg update <branch you want to be on>
  3. を必要に応じて再度試すことができるように(コミットされていない変更を含む)レポは慎重に作業コピーを見直し

これは、作業コピーの変更を元のブランチにマージしようとします。しかし、結果があなたの望むものであるという保証はありません。

これを防ぐには、hg update --checkを使用してください。 --checkオプションは、コミットされていないローカル変更がある場合、更新を中止します。

+1

- 私がブランチを越えて更新しようとしているかどうかにかかわらず--checkは中断します。ブランチ内のコミットされていない変更を作業コピーや更新に許可する方法はありますか?たぶん私の問題は、それは技術的には現在の頭の祖先だったということでした。 – nmichaels

+0

@nmichaels:これを行う組み込みコマンドはありませんが、拡張機能や 'preupdate'フックの作成を検討することができます。 –

関連する問題