Dan*_*ish 31 version-control merge mercurial
我是一个善变的人,我正在尝试做一些非常简单但却无法弄清楚如何做的事情.我创建了一个分支来做一些实验而不会打扰主分支.
trunk A -- B -- C
\
experiment D -- E -- F
Run Code Online (Sandbox Code Playgroud)
我喜欢实验的方式,并希望将它与trunk合并并获得
trunk A -- B -- C -- D -- E -- F
Run Code Online (Sandbox Code Playgroud)
但是,由于'trunk'分支中没有任何改变,合并表示没有任何合并,这是公平的.我只需要结束一个名为"trunk"的分支.我怎样才能做到这一点?
ang*_*son 66
Mercurial中的合并始终以下列方式工作:
例如,在您的情况下,您会这样做:
hg update trunk
hg merge experiment
Run Code Online (Sandbox Code Playgroud)
选择要更新的分支以及要合并的分支时需要考虑一些事项,这与书签和分支名称有关.
先取分支名称.如果您首先更新到主干分支,然后与实验合并,则合并变更集将位于主干分支上.
但是,如果您更新到实验分支,与trunk合并,则合并变更集将在实验分支上.
在考虑合并的原因时,这一点很重要.您是否正在将实验合并到主干中,或者您是否正在使用主干上发生的其他更改来更新实验.
对于书签,对于较新版本的Mercurial,书签是不可或缺的一部分,如果您更新为书签,请说如下:
hg update moving-target
Run Code Online (Sandbox Code Playgroud)
然后提交,该书签将遵循您的提交,即.它会向前发展.
在这种情况下,如果在主干分支的头部有一个名为moving-target的书签,并更新到该书签,则合并变更集在提交时将向前移动该书签.
dls*_*dls 13
一旦创建了分支,就无法完全实现单个默认分支(有一些例外情况,请参见下文).但是,你应该能够合并experiment到default,实现同样的事情.
如果你从这开始:

并执行此操作:
hg update trunk
hg merge experiment
Run Code Online (Sandbox Code Playgroud)
你应该最终得到这个:

其他选择:
使用rebase或补丁队列,您实际上可以重新定位experiment分支上的变更集default.这基本上会删除experiment命名分支并创建一些default更改集.但是,如果您已经与另一个用户共享上面第一张图像的更改集,则无法执行此操作.
| 归档时间: |
|
| 查看次数: |
41825 次 |
| 最近记录: |