5

あるブランチを別の既存のブランチにマージする代わりに、2 つのブランチを 3 つ目の新しいブランチにマージすることは可能ですか?

4

1 に答える 1

7

2 つの既存のブランチをマージし、マージを 3 番目の新しいブランチの先端と見なし、マージされたブランチの前のヘッドを 1 番目と 2 番目のブランチと見なします。

o    changeset:   3:92692c4a6b12
|\   bookmark:    masala
| |  summary:     merge salt and pepper
| |
| o  changeset:   2:a5f955adf03d
| |  bookmark:    pepper
| |  summary:     add some pepper
| |
o |  changeset:   1:2b56f2dc115f
|/   bookmark:    salt
|    summary:     add some salt
|
o  changeset:   0:e992ce7dd508
   summary:     initial

ここでは、開発中のさまざまな行をマークするためにブックマークが使用されています。したがって、新しい 3 番目のブランチでmasala作業したい場合は に更新し、1 番目のブランチで作業したい場合は に更新しsalt、2 番目のブランチを に更新してpepperから作業を続けてコミットします。

(ブックマークではなく) 名前付きブランチで作業したい場合はhg branch masala、リビジョン 2 と 1 のマージをコミットする前に a を発行してください。

基本的なメッセージは、グラフには頭が 1 つしかありませんが、それを 3 つの異なる開発ラインとして自由に解釈できるということです。

ここで、2 番目のブランチで作業を続けたいとしますpepper

$ hg up pepper
... hack ...
$ hg ci -m "need more pepper"

そして、あなたはそのことについていくつかのアイデアを持っていますsalt

$ hg up salt
... hack ...
$ hg ci -m "less salt please"

履歴グラフに 3 つのブランチがより明確に表示されるようになりました。

o  changeset:   5:d1f8eb72119a
|  bookmark:    salt
|  summary:     less salt please
|
| o  changeset:   4:acc9b01f584f
| |  bookmark:    pepper
| |  summary:     need more pepper
| |
+---o  changeset:   3:92692c4a6b12
| |/   bookmark:    masala
| |    summary:     merge salt and pepper
| |
| o  changeset:   2:a5f955adf03d
| |  summary:     add some pepper
| |
o |  changeset:   1:2b56f2dc115f
|/   summary:     add some salt
|
o  changeset:   0:e992ce7dd508
   summary:     initial

ブックマークと名前付きブランチに代わる方法は、個々のブランチに異なるクローンを使用することです。つまり、マージされていないブランチでレポを複製し、それらをクローンにマージします。どのアプローチが最適かは、特定のワークフローと個人的な好みによって異なります。

于 2011-03-22T07:32:00.647 に答える