我在Bitbucket和我的本地机器上有一个Mercurial回购,两者都是镜像,是最新的。我创建了一个功能分支,反映在两个repos中。我在功能部门完成了所有工作。
功能分支现已完成,我现在想把它作为主回购和本地副本的默认设置。我并不关心默认分支,已经有足够的工作进入功能分支,我想要做的就是将其指定为新的默认分支。
我认为我不想合并也不应该合并?我怎么能这样做,所以本地和远程都不会混淆?
答案 0 :(得分:25)
将feature-branch
合并到default
然后关闭feature-branch
:
$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch
没有更清晰明智的方式(我知道)要“feature-branch
默认”。
有一件事情不是很好,但你可以做的是在default
之上提交feature-branch
:
$ hg checkout feature-branch
$ hg branch default
$ hg commit
但这会在default
分支中留下两个头,这是次优的。
答案 1 :(得分:19)
从Mercurial 2.4开始,您可以创建一个名为@
的书签,Mercurial将检出该修订版的新克隆。
但是,我仍然会尝试使用default
作为主要开发的分支。这样做会给已经习惯使用Mercurial的开发人员带来最少的惊喜--Murcurial中的wiki describes the standard way to use branches。
如果您遵循使用default
作为开发主分支的传统建议,那么您应该在合并之前关闭功能分支:
$ hg update feature-branch
$ hg commit --close-branch -m "Feature done, merging into default branch"
$ hg update default
$ hg merge feature-branch
$ hg commit
如果您在启动功能分支后没有在默认分支上完成任何工作,那么此合并将是微不足道的,并且没有冲突。否则你将不得不解决冲突。如果您确定要保留功能分支中的所有内容,则可以执行
$ hg merge --noninteractive --tool internal:local feature-branch
$ hg revert --all --rev feature-branch
而不仅仅是上面的hg merge
。这将确保default
上的新提交看起来与feature-branch
上的最后一次提交完全相同。
答案 2 :(得分:9)
我通过关闭默认分支而没有合并成功。
在我的开发人员工作目录中:
$ hg update default
$ hg commit --close
然后我的开发分支成为新的默认分支。 但我不知道为什么选择我的开发分支的规则 作为新的默认值。 我认为这是因为它是我的提示? (或者可能最后改变了分支?(小费?))
我也认为下次你必须重复这一点。 因为我认为我选择的分支名称被“默认”名称“覆盖”。
拥有分支名称会很好。
DEV-的projectname-version.x =默认
问候
答案 3 :(得分:1)
我想做你刚才所描述和追捕的事情,直到我找到一个使用revert命令完成你所描述的答案的答案。这是我使用的代码:
hg revert --all --rev $ {1}
hg commit -m"将分支$ {1}恢复为默认值"
其中$ {1}是修订号或分支名称。这两行实际上是bash脚本的一部分,但是如果你想手动执行它们,它们可以自行工作。
如果您需要向发布分支添加热修复,但需要从默认构建(直到我们使用CI工具并且能够从分支构建并随后取消发布分支),这非常有用。