Mercurial - 将两个分支合并为第三个新分支

Aco*_*orn 5 mercurial branching-and-merging

有可能,而不是将一个分支合并到另一个现有分支,将2个分支合并到第3个新分支中吗?

Obe*_*nne 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
Run Code Online (Sandbox Code Playgroud)

这里的书签用于标记开发中的不同行.因此,如果您想在新的第3分支masala中工作,请在继续工作和提交之前更新到,如果您想要在第一个分支上工作,请更新到salt第二个分支更新,并且类似pepper.

如果您更喜欢使用命名分支(而不是书签),只需hg branch masala在提交修订版本2和1的合并之前发出一个.

基本信息是,虽然图表只有一个头,但可以自由地将其解释为3个不同的开发线.

现在,假设你想继续第二个分支的工作,pepper:

$ hg up pepper
... hack ...
$ hg ci -m "need more pepper"
Run Code Online (Sandbox Code Playgroud)

然后你对这salt件事有一些想法:

$ hg up salt
... hack ...
$ hg ci -m "less salt please"
Run Code Online (Sandbox Code Playgroud)

现在,历史图表更清楚地显示了您的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
Run Code Online (Sandbox Code Playgroud)

书签和命名分支的替代方法是为各个分支使用不同的克隆.那就是你用未合并的分支克隆你的repo并将它们合并到克隆中.哪种方法最好,取决于您的具体工作流程和个人喜好.