Mercurial コミットをリポジトリに入力されていないかのように完全に削除し、以前のコミットに戻したいです。
これは可能ですか?
それが最後のコミットで、どこにもプッシュしていない場合は、rollback
. そうでなければ、いいえ。あまり。パスワードを変更する時が来ました。
編集:古いリビジョンからクローンを作成し、保持したい変更をマージできることが指摘されています。あなたが制御していないレポにプッシュしていない限り、これも当てはまります。一度プッシュすると、データを取り戻すのは非常に困難になる可能性が非常に高くなります。
コミットに関する mq 情報を削除してみることができます。
履歴を編集するには、Histedit 拡張機能を使用します。
hg histedit 45:c3a3a271d11c
ただし、これはまだコミットを公開リポジトリにプッシュしていない、公開リポジトリを所有している、および/またはそこにあるすべてのクローンを説明できる状況でのみ意味があることに注意してください。次のエラーが表示された場合:
abort: can't rebase immutable changeset 43ab8134e7af
これは、Mecurial が、これが既にプッシュされた公開チェンジセット (フェーズdraft
を参照) であると認識していることを意味します。
hg phase -f -d 45:c3a3a271d11c
複数のコミットである場合、および/または既に別の場所にプッシュしている場合は、リポジトリを複製して、複製する最後の変更セットを指定できます。
これを行う方法については、こちらの回答を参照してください:
Mercurial: 壊れた履歴を修正する
ローカルでのみコミットし、プッシュしなかった場合は、ローカルでクローンを作成するだけで (私のリンクで説明されているように)、完了です。
すでにリモート リポジトリにプッシュしている場合は、それをクローンに置き換える必要があります。
もちろん、これを行うことができる (または許可されている) かどうかによって異なります。
「hg backout」を使用して、基本的に逆マージを行うことができます。すべてのオプションは、無料で入手できる本「Mercurial: The Definitive Guide」で説明されています。
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
If using tortoise you can use modify history > strip...
はい。私が間違っていない限り、v2.3 (rel. 2012/08/01) 以降、HisteditExtension をdrop
コマンドで使用して、コミットを削除しstrip
たりbackout
、変更を削除したりできます。
この機能に関する簡単な Google 検索: https://www.google.com/webhp#q=histedit+drop