1

何らかの理由で、次のような状況があります。

ここに画像の説明を入力

今、私はリビジョン 89を取り除きdefault_2、早送りしたいと考えています。default

hg up -r default
hg transplant 61:89

また

hg transplant -b default_2

Mercurial (1.8.2+20110401) は私の作業コピーを rev 89 に更新するだけです。mq拡張機能を使用すると、すべての中間リビジョンを 1 つずつ指定する必要があるようです。

質問は次のとおりです。

  1. なぜ機能しないtransplantのですか?(ここでお勧めします: https://www.mercurial-scm.org/wiki/RebaseProject#When_rebase_is_not_allowed )
  2. 痛みを伴わずに早送りする方法はありますか?
4

3 に答える 3

4

Mercurial キューを使用すると、次のことができます。

hg qinit
hg qimport -r 61:89
hg qpop -a           # unapply all patches
hg up default        # return to your default branch
hg qpush -a          # apply all patches on default
hg qfinish -a        # move applied patches into repo history

注:これは、リビジョン 61:89 がパブリック リポジトリにプッシュされていないことを前提としています。指定されたmqコマンドは履歴を変更します。これらのリビジョンがすでにプッシュされている場合は、単にdefault2ブランチを閉じてから にマージdefault2するのが最善defaultです。

于 2011-04-19T13:55:21.747 に答える
1

試す:

 hg branch --force default

default という名前の新しいブランチを再作成します

于 2016-06-16T14:17:32.703 に答える
0

Mercurial 2.0以降では、graftコマンド(移植拡張機能の大部分を置き換える組み込みコマンド)を使用できます。

hg graft 61:89

移植と移植の違いに関する関連質問も参照してください。

Mercurialが名前付きブランチ間の実際の早送りをサポートしていない理由は、ブランチ名がMercurialコミットオブジェクトの一部であるためです。Mercurialブランチモデルの詳細については、この記事も参照してください。

于 2012-11-02T21:14:10.333 に答える