前言
    目前所在的公司的版本控制使用的是Mercurial,它也有一个对应的客户端小乌龟,但是Mercurial跟我们之前使用的SVN有着本质的区别,对于其区别会在下一篇中介绍到,这次主要是带领大家认识一下Mercurial。    
正题

一、概念
    Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

    Mercurial关键在于这个分布式,这也是跟我们之前常用的SVN不一样的地方,那它这个分布式是如何体现的呢,我们会在之后的文章中介绍。

二、常用命令
    对Mercurial的概念有了简单的了解后,下一步就是对其使用和操作,虽然我们有像小乌龟这样的图形化工具来帮助我们更轻松的对Mercurial进行操作,但是了解和熟悉Mercurial命令会让你对其根本原理更加了解,显得更加professional。

    下面我会列出一些常会用到的一些命令,或许你会头晕,纳尼,这么多+_+,但是如果你对其意思了解了其实就很简单(根据单词意思就差不多了再加上熟练使用下)。
    
    基本命令:
hg init:
创建一个版本库

hg add:
将文件放到入库等候队列中. 它们在你执行 commit 操作之前实际上是不会入版本库的

hg commit:
把当前所有文件的状态保存到版本库(保存到当前版本库)
hg com -m "提交输入信息":不需要弹出输入框,直接提交信息

hg log:
显示已经提交到版本库的变更历史(整个版本库的变更历史)
hg log test.txt 即可查询test.txt文件的变更历史
hg log -l num:用于显示最近几个(num)下的变更历史
hg log -r rn -r rn -r rn:显示指定的几个版本的变更历史(rn版本号)
hg log -r rn1:rn2 显示rn1到rn2版本之间的变更历史
hg log -v -r rn显示指定的版本的变更历史(包含变更的文件)
hg log -v -p -r rn显示指定版本变更历史(包含变更内容)

hg revert:
将变更的文件恢复到最近一次提交后的状态
hg revert 具体文件:恢复到上次提交的状态(会生成orig文件)
hg revert --all:恢复当前目录的操作到上次提交的状态

hg status:(hg st)
显示改动过的文件列表
“M” 表示 “Modified” – 文件已经被修改. “!” 表示丢失 – 文件原本应该在那儿, 但是不见了. “?” 表示未知 – 该文件尚未被 Mercurial 管理, 版本库里没有任何信息.

hg diff:
hg diff file:显示一个文件的改动详情,文件自最后一次提交后具体做了哪些改动
hg diff -r versionnum:versionnum file:显示一个文件两个版本之间的改动(小版本在前大版本在后,如1:2)

hg remove:
将文件放到出库等候队列中. 它们在你执行 commit 操作之前实际上是不会从版本库移除的

hg cat:
显示任何文件的任何版本
hg cat -r 版本号 文件:显示指定版本的文件内容
hg cat 文件:显示当前文件的内容

hg update:
将工作目录更新到指定版本

hg tip -vp
显示刚创建的变更集详细信息


    团队协作
hg serve
启动一个 WEB 服务器以便当前版本库能通过 Internet 访问(一般我们客户端不会用的)

hg clone
获取版本库的完整副本
hg clone 源url 目标文件夹:将url版本库复制到目标文件夹
hg clone url:将url版本库复制到当前目录

hg push
把一个版本库的新增变更推送到另一个版本库(需要有ssl)
可以把提交后的更改变更到中央版本库(即把draft状态改为public)

hg outgoing
列出当前版本库等待推送的变更列表
即列出提交的draft状态的变更列表

hg incoming
列出等待pull的变更列表

hg merge
合并两个版本头

hg parent
显示工作目录当前的变更集

hg up
不带任何参数的 hg up 命令会把工作目录更新到 tip (始终为最新的变更集)

hg pull
每次 pull 都是安全的; 它所做的只是让我们得到其他人的变更. 我们可以随时切换到新的变更下工作

    如果你作为团队协作的一员, 你的工作流大概会是这个样子:

如果你有一段时间没有更新代码, 你需要获取其他人已经完成的代码:
hg pull
hg up
修改代码
提交代码 (本地提交)
重复步骤 2~3 直到你的代码完成度还不错, 你决定让其他人都来 “享受” 你的成果
一旦你准备分享你的代码:
用 hg pull 获得其他所有人的变更 (如果有的话)
用 hg merge 将这些变更合并到你的代码中
测试! 以确保合并操作没有出乱子
hg commit (合并结果)
hg push

失误补救
hg revert:
将变更的文件恢复到最近一次提交后的状态
hg revert 具体文件:恢复到上次提交的状态(会生成orig文件)
hg revert --all:恢复当前目录的操作到上次提交的状态

hg rollback:
撤销最后一次提交, 前提是你还没有把它推送 (push) 给其他人(即删除draft状态,但是更改的文件还是没有动,只是将draft状态删除)

hg paths:
显示远程版本库列表(显示push到的中央版本库的url)

hg parent:
显示当前正基于哪 (几) 个变更集进行开发工作(本地工作目录的变更集)

hg backout:

拆除 (backout) 早些时候的变更集. 它会分析变更集, 得出 反向变更集, 并应用于你当前的工作目录

    小结:
    这么多命令是不是被吓到了,但是你根据这几大分类去拆分,然后再去看单词的意思,其实就很简单了,主要是知道在什么情况下使用什么命令。如果你对这些命令明白了以后再操作小乌龟那就轻松很多了。

Mercurial简介的更多相关文章

  1. Mercurial(Hg)基本操作

    Mercurial(Hg)基本操作 来源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html Mercuria ...

  2. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  3. Qt简介

    一.Qt与Qt Creator简介        Qt是一个跨平台应用程序和 UI 开发框架.使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序. ...

  4. Python生态环境简介[转]

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  5. Bamboo简介

    前言     前面介绍了JIRA管理平台,那么本篇就来介绍关于自动编译项目的工具-Bamboo. 正题 1.简介 Atlassian Bamboo 是一款持续集成构建服务器软件(Build Serve ...

  6. Git 教程(一):简介和安装

    为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的 ...

  7. (转)python生态环境简介

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  8. Git SVN 版本控制 简介 总结 MD

    Git 使用准备 主流的 Git 托管网站 GitLab,主流网站,私有仓库也完全免费,功能更强大,页面精美,操作方便 GitHub,最著名的免费Git托管网站,缺点是免费的不支持私有项目 OSChi ...

  9. Git简介【转】

    本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git简介 Git是什 ...

随机推荐

  1. alv 显示 汇总数据

    alv中有 字段设置 gs_fieldcat-do_sum = ‘1’.字段  用于控制汇总

  2. linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换

    此办法只适合于linux下的php网站放到Windows服务器IIS下 ,  网站除了主页面正常以外  子页面全部出现404错误    这里子页面出现404 错误是说明伪静态没有开启 什么是.htac ...

  3. 英特尔的VT-d技术是什么?

    VT-d技术: 我们知道对于服务器而言,很重要的一个组成部分就I/O,CPU的计算能力提升虽然可以更快地处理数据,但是前提是数据能够顺畅的到达CPU,因此,无论是存储,还是网络,以及图形卡.内存等,I ...

  4. SQL查询数据封装JavaBean对象

    public static List getListBySql(String sql, Class cls){   List list = new ArrayList();   Connection ...

  5. 提升Delphi编程效率必须使用的快捷键(Delphi2007版本)

    1. [CTRL+空格] [CTRL+SHIFT+空格] 这两个快捷键都是在代码编写过程中用到的,起提示作用,使用频率最高. CTRL+空格: 在当前光标处提示有哪些变量.函数可以使用.这个功能对于无 ...

  6. 如何使用git

    本文不是谈论git具体命令的技术文章. 原文地址:http://blog.csdn.net/ffb/article/details/11206067 我之前发了一条关于git中如何处理中文文件名的微博 ...

  7. 11.4.2 排序或合并文件(sort命令) - 51CTO.COM

    11.4.2 排序或合并文件(sort命令) - 51CTO.COM 11.4.2 排序或合并文件(sort命令) 2010-03-12 14:37 陆松年 电子工业出版社 我要评论(0) 字号:T ...

  8. linux内存基础知识和相关调优方案

    内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...

  9. STL 源代码分析 算法 stl_algo.h -- includes

    本文senlie原,转载请保留此地址:http://blog.csdn.net/zhengsenlie includes(应用于有序区间) ------------------------------ ...

  10. Android NDK入门实例 计算斐波那契数列二生成.so库文件

    上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...