Mercurialのコミットを完全にリポジトリに入力されなかったかのように完全に削除し、以前のコミットに戻りたいです。
これは可能ですか?
それが最後のコミットであり、どこにもプッシュしていない場合は、rollback
でそれを行うことができます。そうでなければ、いいえ。あんまり。パスワードを変更するとき。
編集:古いリビジョンからクローンを作成し、保持したい変更をマージできることが指摘されています。また、あなたがコントロールしていないレポジトリにプッシュしない限り、それは真実です。プッシュすると、データを取得するのが非常に難しくなります。
コミットに関するmq情報を削除してみることができます。
履歴を編集するには、 Histedit Extension 拡張機能を使用します。
hg histedit 45:c3a3a271d11c
ただし、これはコミットをまだ公開リポジトリにプッシュしていない、公開リポジトリを所有している、および/またはそこにあるすべてのクローンを説明できる状況でのみ意味があることに留意してください。次のエラーが表示される場合:
abort: can't rebase immutable changeset 43ab8134e7af
これは、Mecurialがこれがすでにプッシュされたパブリックチェンジセット( phases を参照)であると見なしていることを意味します-再度draft
に強制することができます:
hg phase -f -d 45:c3a3a271d11c
私はかなり頻繁にこれに遭遇します。私はコミットし、その後プッシュしてプルします。しかし、その後、新しく作成されたコミットを不要にする何かがやってくる。平野 hg rollback
はプルを元に戻すだけなので十分ではありません...
これはやるべきことです:
hg strip <rev>
チェンジセットをどこにもプッシュしなくても問題はありません。
複数のコミットであるか、すでに他の場所にプッシュしている場合は、リポジトリを複製して、複製する必要のある最後の変更セットを指定できます。
これを行う方法はこちらの私の答えをご覧ください:
Mercurial:中断された履歴を修正
ローカルでのみコミットし、プッシュしなかった場合は、クローンをローカルに作成するだけで(私のリンクで説明されているように)完了です。
すでにリモートリポジトリにプッシュしている場合は、クローンに置き換える必要があります。
もちろん、これを行うことができる(または許可される)かどうかによって異なります。
「hg backout」を使用して、基本的に逆マージを実行できます。すべてのオプションは、無料で入手できる本「Mercurial:The Definitive Guide」で説明されています。
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
亀を使用している場合は、変更履歴を使用することができます>ストリップ...
はい。誤解がない限り、v2.3(rel。2012/08/01)では、HisteditExtension drop
コマンドを使用してコミットを削除し、strip
またはbackout
を使用して変更を削除できます。
この機能に関する簡単なGoogle検索: https://www.google.com/webhp#q=histedit+drop