如何在Hg中将分支推送到远程且不与default分支合并?
在Mercurial中推送新分支且不合并到default分支的方法
1. 本地创建并提交新分支
- 先确认当前工作目录无未提交变更(用
hg status检查),然后创建新分支:
示例:hg branch <你的分支名>hg branch feature-user-profile - 完成代码修改后,提交到新分支:
hg commit -m "feat: 初始化用户资料功能分支"
2. 推送新分支到远程仓库
直接推送指定分支,这样只会把目标分支的变更推送到远程,不会涉及default分支的合并:
hg push --branch <你的分支名>
也可以用变更集推送方式,效果一致:
hg push -r <你的分支名>
3. 避免误合并的关键操作
- 拉取更新时指定分支:后续拉取远程该分支的更新时,同样指定分支,防止把其他分支的变更拉到本地default分支:
hg pull --branch <你的分支名> - 远程仓库分支保护(可选):如果要从根源防止合并到default,可以在远程仓库的
.hgrc配置文件中添加钩子脚本,拒绝合并到default的变更。示例配置:
对应的Python钩子脚本可检查变更集中是否存在合并到default的操作,若有则终止推送。[hooks] pretxnchangegroup.forbid-merge-to-default = python:scripts.forbid_merge_to_default
注意事项
- 推送前用
hg branches查看本地分支状态,hg outgoing确认待推送的变更仅属于目标分支 - 不要随意使用
hg push --force,避免覆盖远程分支的有效变更 - 如果远程仓库默认设置为推送所有分支,必须明确指定分支名,防止误推其他分支内容
内容的提问来源于stack exchange,提问作者Suva
相关产品推荐
相关产品推荐

