1

リポジトリにこの変更セットがある場合

A --> B --> C --> D
      *

B がブックマークされ、D が先端にあります。

具体的には、次のような C と D を B に押しつぶそうとしています。

hg strip -r "bookmark:." -k

この行を除いて、保持したいコミット B も削除されます。

4

2 に答える 2

2

C と D を squash して新しいコミット C' を作成するのか、B、C、D を squash して新しいコミット B' を作成して元のブックマークを保持するのか、完全にはわかりません。

最初の場合:

hg rebase -s 'children(bookmark)' -d bookmark --collapse -m <msg>

-mまたはオプションを使用してコミット メッセージを指定する必要があります。そう-lしないと、エディターにドロップされます。

2番目の場合:

hg rebase -s bookmark -d bookmark^ --collapse -m <msg>

リビジョン自体を除くリビジョンのすべての子孫を指定するリビジョンセットには、次のリビジョンセットを使用します。

children(bookmark)::

この時点での非直線的な履歴は、予期しない結果を生み出す可能性があることに注意してください (特に、children()ここでの使用は単一の子リビジョンのみを想定しています)。

このために、hgrc ファイルで rebase 拡張機能を有効にすることを忘れないでください。

于 2015-06-08T02:48:39.630 に答える
1

拡張機能を使用してhisteditこれを実現できます。単純に入力します(例では、リビジョン B のハッシュはhg histedit c561b4e977dfどこにありますか)。c561b4e977df次にfold、ポップアップするエディターでリビジョン C と D の横に入力します。これにより、リビジョン C と D が B に折りたたまれます。

于 2015-06-07T23:16:32.513 に答える