前言
    目前所在的公司的版本控制使用的是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. 适用函数ALSM_EXCEL_TO_INTERNAL_TABLE把excel文件传输到内表中

    FM:ALSM_EXCEL_TO_INTERNAL_TABLE 是上载Excel文件的一个函数,但是这个函数有两个限制. 一是每个CELL只能导入前50个字符,二是如果超过9999行,行号会初始化为从 ...

  2. chfn,chsh,last,login,mail ,mesg ,talk,wall,write,nice ,pstree ,renice,skill ,expr ,reset,tset,compress ,lpd ,lpq ,lpr ,lprm,fdformat ,mformat ,mkdosf

    名称:chfn 使用权限:所有使用者 用法:shell>> chfn 说明:提供使用者更改个人资讯,用于finger and mail username 范例: shell>> ...

  3. 同步linux服务器的时间

    1:看系统时间的时候发现有点儿误差,大概在2分钟左右. 于是想自动同步系统的时间. 2:找到ntpdate命令,没有就安装.debian(apt-get install ntpdate) 3:获取时间 ...

  4. 8086 CPU 寻址方式

    8086 CPU 寻址方式灵活.有以下几种 idata 表示常量 1.   [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 ...

  5. Apache Lucene

    1.Lucene  -全文搜索引擎 Apache Lucene 是一个基于Java的全文搜索引擎,利用它能够轻易的为Java软件添�全文搜索引擎的功能. Lucene最重要的工作是替文件的每个字索引, ...

  6. codeforces 597B Restaurant

    题目链接:http://codeforces.com/contest/597/problem/B 题目分类:贪心 题目分析:经典的看节目问题(挑战程序设计page 40) 代码: #include&l ...

  7. django中mysql数据库设置错误解决方法

    刚在django中settings.py进行设置mysql数据库. 当进行执行python manage.py shell命令时会报以下错误: 只需要在settings.py中 DATABASES = ...

  8. SMART原则_百度百科

    SMART原则_百度百科 SMART原则

  9. 使用FragmentTabhost取代Tabhost

       如今Fragment使用越来越广了,尽管Fragment寄生在Activity下.可是它的出现对于开发人员来说是一件很幸运的事,使开发的效率更高效了.好了以下就说说 FragmentTabhos ...

  10. ExtJS学习-------Ext正确Dom操作:Ext.get Ext.fly Ext.getDom

    详细实例: (1)创建JSP文件.引入CSS和js文件,加入三个Div <%@ page language="java" import="java.util.*&q ...