56

Mercurial コミットをリポジトリに入力されていないかのように完全に削除し、以前のコミットに戻したいです。

これは可能ですか?

4

8 に答える 8

33

それが最後のコミットで、どこにもプッシュしていない場合は、rollback. そうでなければ、いいえ。あまり。パスワードを変更する時が来ました。

編集:古いリビジョンからクローンを作成し、保持したい変更をマージできることが指摘されています。あなたが制御していないレポにプッシュしていない限り、これも当てはまります。一度プッシュすると、データを取り戻すのは非常に困難になる可能性が非常に高くなります。

于 2011-02-22T22:45:09.930 に答える
30

コミットに関する mq 情報を削除してみることができます。

  • これを行うには、[ファイル] -> [設定] -> [拡張機能] に移動する必要があります。
  • mqをチェックして、GUIを再起動します。
  • その後、不要なコミットを右クリックし、ModifyHistory->Strip
于 2011-12-15T12:28:54.793 に答える
12

履歴を編集するには、Histedit 拡張機能を使用します。

 hg histedit 45:c3a3a271d11c

ただし、これはまだコミットを公開リポジトリにプッシュしていない、公開リポジトリを所有している、および/またはそこにあるすべてのクローンを説明できる状況でのみ意味があることに注意してください。次のエラーが表示された場合:

abort: can't rebase immutable changeset 43ab8134e7af

これは、Mecurial が、これが既にプッシュされた公開チェンジセット (フェーズdraftを参照) であると認識していることを意味します。

hg phase -f -d 45:c3a3a271d11c
于 2013-08-29T20:29:27.467 に答える
5

複数のコミットである場合、および/または既に別の場所にプッシュしている場合は、リポジトリを複製して、複製する最後の変更セットを指定できます。

これを行う方法については、こちらの回答を参照してください:
Mercurial: 壊れた履歴を修正する

ローカルでのみコミットし、プッシュしなかった場合は、ローカルでクローンを作成するだけで (私のリンクで説明されているように)、完了です。

すでにリモート リポジトリにプッシュしている場合は、それをクローンに置き換える必要があります。
もちろん、これを行うことができる (または許可されている) かどうかによって異なります。

于 2011-02-22T23:48:47.193 に答える
5

「hg backout」を使用して、基本的に逆マージを行うことができます。すべてのオプションは、無料で入手できる本「Mercurial: The Definitive Guide」で説明されています。

http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html

于 2011-02-22T22:46:33.397 に答える
3

If using tortoise you can use modify history > strip...

于 2012-12-04T13:23:03.953 に答える
1

はい。私が間違っていない限り、v2.3 (rel. 2012/08/01) 以降、HisteditExtension dropコマンドで使用して、コミットを削除しstripたりbackout、変更を削除したりできます。

この機能に関する簡単な Google 検索: https://www.google.com/webhp#q=histedit+drop

于 2014-07-26T19:57:30.063 に答える