Mercurial 是一款开源且免费的分布式版本控制工具,跨 Windows、macOS 与 Linux 平台均可运行。它提供 hg init、clone、add、commit、log、merge、rollback 等命令,风格统一、上手容易;在功能上支持命名分支、书签、变更集管理以及三向合并,并通过 SHA 校验、增量存储与 append-only 结构来维护历史记录的完整性,也让大型项目保持良好性能。工作流方面,可借助 Python 扩展、钩子机制、TortoiseHg 和内置 Web 界面进行增强,个人开发者与团队都能以较低的学习成本开展分布式协同开发。

一、正常流程
1、查看项目状态
hg st
2、把尚未纳入索引的文件补充到索引中
hg add 文件
用 hg add . 也可以把全部文件都纳入索引。
3、提交修改
hg ci -m "提交说明"
4、初次推送代码
推送一个新分支到远端仓库时,加上 --new-branch 参数即可完成操作。
5、非初次推送代码
hg push -b 分支号
二、分支管理
1、新建分支
hg branch 查看当前分支名称
2、查看当前分支
hg branch
3、查看所有分支
hg branches
4、切换分支
更新到新的分支号可以使用 hg update 命令。
5、合并分支
合并指定编号的分支,使用 hg merge 命令即可完成操作。
不加分支号直接执行 hg merge,作用就是把当前分支上的多个 head 合并到一起;这种用法常见于多人共同操作同一分支之后,需要将各自产生的 head 归并起来的场景。
三、更新操作
1、更新当前项目状态
hg update
2、更新代码
hg pull
四、回退操作
1、代码尚未提交(也就是还没执行 hg ci -m “提交” 这一步)时,如何把代码还原
hg revert 指定文件
也可以用 hg revert -a 把所有改动都还原回去。
2、代码提交后执行一次还原提交操作,之前修改过的代码内容仍会保留;需要留意的是,该还原仅能执行一次,重复操作无法生效。
hg rollback
1、更轻松的管理
集中式版本控制系统把所有仓库集中在一处,与仓库有关的许多管理事务便只能落到管理员一人肩上。Mercurial 采用分布式模型,情形就不同了:每位用户各自管理自己的仓库,管理员所做的工作只是协调这些仓库之间的同步。
2、更健壮的系统
分布式架构在稳定性上要优于集中式单机部署:单机方案里,服务器一旦出故障,整个系统就会停摆;而在多节点分布的系统中,个别节点发生异常,通常并不会波及整体运行。
3、对网络的依赖性更低
同步操作的时间点可自由安排,Mercurial 因此支持脱离网络环境完成管理,等到网络连通后再执行同步即可。
1、Revision
Mercurial 把每一项改动都放在独立的 repository 中管理,这样不相关的代码不会互相掺和,也方便逐项验证每部分工作,用户所做的每次改动就是一个 revision。通常存在一个所有用户都能访问的 repository,用来存放项目的“主要”版本;工作 repository 则是用户自己动手的地方,用来实现新特性、修复漏洞、重构或做实验等,改动完成后可以 push 到共用的 repository 中,即完成了一个 revision。
2、Changeset
一组文件的新增或修改可以汇总成一个整体,这个整体在版本管理中被称作 changeset。每个 changeset 都通过两项信息来标明:一是版本号,二是 changeset 标识,像 changeset: 207:58e4906e69e3 这样的形式。
冒号前的数字是版本号,用于标识本地 changeset,仅在用户自己的 repository 中有效。冒号后那串较长的十六进制字符则是 changeset 标识,作为该 changeset 的全局唯一标识符,在所有包含此 changeset 的 repository 中保持一致。当多个用户讨论同一个 changeset 时,通常采用这个 changeset 标识而非前面提到的版本号,因为不同用户的 repository 中,同一个 changeset 的版本号完全可能不同。
3、Head
Head 指代的是 repository 里各分支当前最新的 revision,合并多个分支时一般会涉及这一概念。
4、Tip
Tip 是当前最新 changeset 版本号的一个替代名称。凡是在命令里需要填写版本号的位置,都能用 tip 指代最新 changeset 的版本号。每个 repository 的 tip 各不相同,且同一个 repository 里只存在一个 tip。
5、Log
Log 命令会把 repository 里发生的每一次事件按时间从近到远记录下来。若希望获取更丰富、更详细的历史信息,可指定 -v 诊断输出选项;若需要历史信息中的全部细节,则可指定 —debug 选项。
(您的评论需要经过审核才能显示)
0条评论