8

何かを試すために、リモートのMercurialリポジトリ(ローカルネットワークまたはインターネットを介して)のクローンを作成するとします。
私は自分のクローンで作業し、いくつかのコミットを行います...そして、自分の変更が意味をなさないことに気づき、最初からやり直す必要があります。

そのため、同じソースリポジトリから「新しい」クローンを再度作成したいと思います。
基本的に、実験を開始する前の時点にローカルリポジトリを「リセット」したいと思います。

これを行うための最良/最速の方法は何ですか?

最も簡単な方法は、新しいクローンを作成することですが、HGは、レポ全体と履歴全体をネットワーク経由で再度コピーします。
リポジトリが本当に大きい場合、これには時間がかかるか、ネットワークがブロックされます。

同じフォルダーに新しいクローンを作成しようとしましたが(HGがこれを認識し、変更されたファイルと履歴のみを更新することを期待しています)、リポジトリ全体もコピーされているようです。

「hgロールバック」することはできますが、これは最後のコミットのみをロールバックします。複数のコミットを行った場合、元にできるのは最後のコミットのみです。そのため、コミットを開始する前のポイントにリポジトリをリセットできません。

何か案は?
全部をもう一度複製する以外に本当に方法はありませんか?
(注:TortoiseHgを使用したソリューションがいいでしょう...私はコマンドラインよりもこれを好みます)

4

3 に答える 3

18

ギズモが示唆するように使用を終了しますhg stripが、これを行う従来の方法は、リモートリポジトリからではなく、独自のローカルリポジトリから再度クローンを作成することです。たとえば、チェックアウトが「リポジトリ」であり、変更セット99および100を追加した場合、これは必要ありません。

cd ..
hg clone -r 98 respository repository-scrubbed
mv repository respository-with-crap-I-do-not-want
mv repository-scrubbed repository

それはほぼ瞬時に起こるはずです。

于 2010-01-18T16:19:09.097 に答える
8

Strip Extensionを有効にすると、「hg strip」コマンドを使用して、不要になった履歴を削除できます。

詳細については、Stripコマンドのwikiページを参照してください。

于 2010-01-18T14:22:37.097 に答える
1

hg update -r <changeset number> たとえばhg update -r 1、2番目のバージョンの場合。使用hg logして、必要なバージョンを確認できます

于 2010-01-18T12:04:33.707 に答える