2017-12-20 23 views
1

2つの開発ブランチがあるプロジェクトに自分のブランチがあります(「新しいもの」と「古いもの」と呼ばせてください)Mercurial:ブランチの正確なコピーを取得する

新しいブランチを作成せずに私のブランチを「新しいもの」に正確に見せる方法はありますか?いいえ、私はブランチを作成しません。私は私の変化、そのわずか数行を失う気にしないと、私は再びそれを行うことができます。

+1

これはプロのサイトです。言語をきれいにして仕事で安全に保ちましょう。 –

答えて

1

をではなく、すべてを一掃、なぜ正確に一つの悪いマージを一掃しませんか?

Mercurialの許可あなたはリビジョンを削除します。ただし、そのリビジョンの子孫であるすべてのコミットも削除する必要があります。これは拡張ですが、それはMercurial(2.8以降)のすべての現代版にバンドルされているため、設定の[extensions]セクションにstrip =を追加するだけで有効にするだけです。

マージ(マージ)してリビジョンを作成します。あなたは最初にhg merge <correct thing>を実行してコミットした後、hg merge <incorrect thing>を実行してコミットしたと言います(私はそうだと思います)。

この場合、最新のリビジョンは間違っているリビジョンです。これにより、マージの下位にあるリビジョンも削除されますが、最後に行ったことがhg merge <incorrect thing> && hg commitだった場合は、そのようなリビジョンは存在しません。

間違ったリビジョン番号を表示して、hg logを実行して最後の数リビジョンを表示してからhg strip -r <wrongrev>を実行してください。それはそのリビジョン(およびそのすべての子孫)を削除します。

https://www.mercurial-scm.org/wiki/StripExtensionthis answer~Mercurial — revert back to old version and continue from thereも参照してください。

+0

ストリップアプローチは、チェンジセットが他の場所にプッシュされていない場合にのみ機能します。すべてが1台のマシンに対してローカルであれば、それは正しい解決策です。 – DaveInCaz

+0

@DaveInCaz:もし彼らがリポジトリの他のコピーに送られたならば、それらのコピーからそれらを取り除かなければならないでしょう(これは誰もそれらの上に*新しい*コミットを誰も作っていないことを意味します)そこにも)。 – torek

関連する問題