Mercurialは、ヘッドではない名前付きブランチをマージできますか?

StackOverflow https://stackoverflow.com/questions/1625660

  •  06-07-2019
  •  | 
  •  

質問

基本的に、私はdevブランチを持っています。私がやりたいのは、何かを実装している間に機能ブランチを作成し、それをマージし直すことです。そのため、次のような状況が発生します

 a
 b
 c
 d - dev
/ 
e
f - feature

devは頭ではないので、devとfeatureの両方がfを指すようにdevをfeatureにすることは可能ですか?

gitはこれをうまく実行できると確信していますが、Mercurialに同じことをさせるとは思えません...

役に立ちましたか?

解決

Carl Meyerは正しい。あなたはgitユーザーとして考えているので、Mercurialは物事を異なる方法で処理します。

Carlが提案したことを実行して、次のコミットをdevブランチに強制することができます。 devブランチには不連続性があるため、個人的にはこれを見た方がややこしいと思います。

それを処理する方法は、機能ブランチをマージして戻すことです。 hg update dev&& hgマージ機能&& hg commit -m '完成した機能をマージします。'

これにより、次のようなグラフが表示されます。

  a - dev
  b - dev
  c - dev
  d - dev
 /|  
e | - feature
f | - feature
 \|
  g - dev

私にとって、これは何が起こったのかを明確に示しています。新しい機能のために分岐し、終了したらdevブランチにマージしました。その間にdevに他のコミットがなかったという事実は単なる偶然であり、ワークフローを変更する必要はありません。

他のヒント

hgの名前付きブランチ(gitとは異なり)は「ポイント」しません;どこでも。ブランチ名は、特定のリビジョンの可動エイリアスではありません。各コミットには、コミットが存在するブランチを示すメタデータマーカーがあります。それだけです。

この状況では、「d」から派生した個別のコミットがない場合、 devブランチで必要なことは、「hg branch dev」を実行することだけです。そして、" f"から派生した次のコミットはブランチdevに戻ります。探している結果が得られると思います。

編集:それは機能しますが、実際のマージを行うというSteve Loshの提案は、より賢明な履歴になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top