4

「テスト」ブランチがあり、そこに間違った 15 個のコミットがあります (これらはこのブランチの最後のコミットです)。これらのコミットは必要ありません。取り消したいと思います。しかし、「テスト」ブランチも必要です。それを閉じることはできません。

  • 多くのコミットをバックアウトするには? Mercurial の標準バックアウトでそれを行うのは難しすぎます。コミットとマージが多すぎます。すべてのバックアウト コミットを 1 つの大きなコミットにマージする方法はありますか?

  • ブランチの名前を変更して閉じる方法はありますか?

すべての変更はリモート サーバーに存在します。これらの変更はリポジトリ全体で最後ではなく、テストブランチでのみ最後の変更セットです。

4

2 に答える 2

3

strip変更セットを履歴に残す必要がある場合 (特に、すべてのレポから編集できるかどうか確信が持てないため)、いくつかのオプションがあります。

1)--close-branchテストブランチの先端を、updateそのブランチで適切だった最後のリビジョンにコミットし、そこから新しいコミットでテストブランチを再度開きます。これは、名前付きブランチが複数のヘッドを持つことができるため機能します。

2) 使用hg revert -r <last good rev>してコミットします。これにより、作業ディレクトリがまったく同じになるはず<last good rev>です。次に、削除したい15の変更で起こったことを効果的に元に戻す変更セットをコミットできます。hg diff -r <last good rev>追加または削除されたファイルを修正する必要がある場合があるため、それが正確であることを確認するために使用します。

stripサーバーからの変更が可能であるが (@Dalija の回答に記載されているように) 将来の使用のためにバージョンをローカルに保持したい場合は、チェックアウトhg phaseして、他の場所から変更した後、フェーズをsecretローカルに強制しstripます。そうすれば、それらは引き続き保持されますが、デフォルトではプッシュされません。

于 2014-12-22T16:12:51.617 に答える
1

hg strip変更セットとその子孫をリポジトリから削除するために使用できます。testしかし、ブランチを剪定したいすべてのリポジトリでそれを行う必要がありますpull

https://www.mercurial-scm.org/wiki/StripExtension

于 2014-12-22T15:41:10.657 に答える