1.关于hg命令选项:

每一个每一个命令选项都有一个长的名称,如hg log 命令会使用 –rev选项;

大多数选项拥有一个短的名称,如—rev有一个-r的短名;

长名称以两条横线(–)作为起始,短名起始是一条横线(-)。如—rev、-r;

无论是长名还是短名,其用途是一致的。如-r和—rev 其后都跟一个变更集合的ID或版本号;

如果使用的是短名,多个名称可以连在一起运行。如hg log –v –r –p 2可以写作hg log –vpr 2

2.hg log 命令:

使用该命令可以了解代码仓库变更的历史,其输出的结果中包含以下几个字段

(1)changeset 该字段被一个分号(:)分成两部分,分号的前面是一个数字,其后是一个十六进制的字符串。在查看版本历史的时候,常常会用到前面得数字。这里需要注意的是,该数字所代表的变更集合不是唯一的(比如a,b,c在一个代码仓库中的顺序是0,1,2,在另外一个代码仓库中可能是0,2,1)。真正指向唯一的变更集合的是后面的十六进制的字符串。

(2)user 代表集合的创建者;

(3)date 代表集合创建的时间;

(4)summary 创建者提供的关于该集合的描述文本;

(5)tag 有一些集合会包含一个tag字段,这个特别的字段总是指向代码仓库中最新的版本。

eg:

changeset: 16:0dc476d6fac3
tag: tip
user: Huanbiao Chen <hchen@example.com>
date: Thu Apr 19 13:53:35 2018 +0800
summary: revise demo strategy

如果想要查看特定的版本,在hg log 后跟上版本号即可,如:

查看特定的版本:hg log -r 2

同时查看2,3,4几个版本:hg log -r 2:4

查看版本的详细内容:hg log -vpr 1 
3.使用hg commit 提交代码需要注意的问题

第一次使用hg commit命令提交代码时,很可能会出现代码无法提交的问题。这是因为在代码提交时hg会尝试去找到一个有效的用户名。它会按下面的顺序去逐个尝试寻找有效的用户名:

(1)如果在使用hg conmit提交代码时,使用-u命令选项,并在其后跟上一个用户名(如:dexibe@gmail.com)。此时,该命令将具有最高的优先权;
(2)如果没有第一步的命令选项,它会查看你是否设置了HGUSER环境变量;
(3)如果在你的home目录下,你创建了.hgrc文件,并且该文件设置了username,它会启用该用户名;
(4)到这一步,它会查看你的email环境变量;
(5)如果以上都没有找到合适的用户信息,hg 将查看你的系统寻找用户名和主机名称,并试图根据这些组件构建有效的用户名,通常情况下用户名是不可用的,只会呈现一段警示语句;

4.拉取和推送代码

拉取代码,使用hg pull即可,有一个hg incoming命令我很少用到,仔细看了看,这个命令还是很管用。hg incoming命令不会真正的拉取代码到本地仓库,它只是告诉你使用hg pull会将哪些变更集合拉至本地仓库。这对于你拉取特定的版本集合很管用。
推送代码,使用hg push即可。在真正推送之前,可以使用hg outgoing查看有哪些改变将会被推送至代码仓库。

5.让 hg 跟踪你的文件

hg不会自动的管理你仓库中文件,hg status命令会告诉你那些它不知道的文件,它会在这些文件的前面打上一个“?”号。假如在你的仓库中有一个myfile.txt的文件,执行hg status(简写 hg st)你会看到在myfile.txt前面,我们会看到一个“?”号。如要让hg管理该文件,执行如下命令:hg add myfile.txt

此时运行hg st,你会看到文件myfile.txt前面的“?”号变成了“A”。执行hg commit命令之后,myfile.txt就不会再出现在hg status的输出结果之中。hg status命令的输出结果中仅包含删除的(removed)、被修改的(modified)、重命名的(renamed)文件。添加一个文件,hg什么也不会做,它只是在执行下一次提交(hg commit)之前对该文件“拍一张快照”。

注意事项:

如果使用hg add后跟的是一个目录,该命令会将该目录下的所有文件添加到仓库之中,包括子目录中的文件。假如有一个目录b,其下有一个文件some.txt和d目录,d目录之下有一个文件c.txt。

hg并不追踪文件夹信息,而是追踪文件的路径。在创建一个文件之前,首先创建文件所在的路径。删除一个文件后,它会删除文件所在路径的所有空的文件夹。一般情况下,很少用到空文件夹。如果在你的代码仓库中需要空文件夹,可以通过hg add来添加一个隐藏的文件。在linux系统中,任何以“.”开头的文件都被视作隐藏文件。除此之外,你可以在需要它之前通过自动化执行脚本方式创建空文件夹。

6.复制文件

hg提供了hg copy命令来复制一个文件。用该命令来复制文件,hg会记住新的的文件是源文件的副本。在你合并代码的时候,它会对其作特殊的处理。hg status -C 可以看到myfile-copy.txt是从myfile.txt复制而来。

hg copy命令与unix系统中的cp命令极其相似,只需要提供两个或三个以上的参数即可,最后的一个参数被视作目的地,其它都被视作复制源。这种操作包括以下几种情况:
目的地不存在,源文件为单个文件,将创建同名的新文件;如:
(1)hg copy a k//目录k不存在,重建k目录,并将a复制到k文件夹之下
目的地是一个目录,将源文件复制到该目录之下;如:
(2)hg copy a b d// 将a 和b 复制到d目录之下
复制源跟目的地都是目录,则将复制源复制到目标文件夹之下,并在目标文件夹之下根据复制源目录的名称重建目录,且保持复制源的目录树结构;如:
(3)hg copy z d //假设z的目录树结构为z/a/c,复制到目录d后,d的目录树结构为d/z/a/c
复制源是一个目录,目的地不存在,则创建新的目录,并将复制源下的目录树复制到新的目录之下;如:
(4)hg copy z e//假设z的目录结构为z/a/c,复制完成后e的目录结构为e/a/c
与hg remove命令一样,如果你手动复制一个文件,并让hg能跟踪此文件,可以使用hg copy –after [源文件] [目标文件],如:
(5)cp a b
(6)hg copy --after a b

7.hg diff

hg diff有一个选项–Git或者-g,该选项我们很少用到。假如你修改了一个文件的权限,运行hg status会看到文件被修改,而运行hg diff将看不到任何输出结果。如果在hg diff后跟上-g选项,你将会看到文件的实际状态。在unix系统下运行以下代码,看看输出结果。
(1)chmod +x a
(2)hg diff -g

总结:目前实习阶段学到的使用内容

hg commit 提交,并且可在字符界面添加描述内容

hg log -G | less :查看版本详情

hg diff -c 15 | less -R :查看变更历史

hg diff -c 15 --git -U 999999 > 15.diff :将变更内容重定向为diff文件

分布式版本控制工具Mercurial------Linux下hg命令的使用的更多相关文章

  1. 分布式版本控制工具:git与Mercurial(zz)

    分布式版本控制工具:git与Mercurial [收藏此页] [打印]   作者:cyfdecyf  2007-12-26 内容导航: 第1页   [IT168 技术文档]    说到版本控制工具,很 ...

  2. 痞子衡嵌入式:备受开源社区推崇的分布式版本控制工具(Git)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是分布式版本控制工具Git. 1.为什么需要版本控制系统? 单人软件项目开发过程,往往很多功能都是逐步增加的,在代码开发过程中,有的时候功 ...

  3. 开源分布式版本控制工具 —— Git 之旅

    Git 主张的分布式代码库与文件快照的设计思想,相对于传统 CVS.SVN 等集中式.文件差异式版本控制工具是一种挑战与颠覆.Git 带来了离线提交.轻量级分支等诸多便利.不过,也有人质疑 Git 的 ...

  4. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  5. 例解 Linux 下 Make 命令

    Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...

  6. linux下svn命令使用大全

    最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...

  7. linux下tar命令详解

     linux下tar命令详解    tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...

  8. Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...

  9. linux下svn命令大全

    linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/p ...

  10. Linux下chkconfig命令详解(转)

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

随机推荐

  1. 【linux】记录一下遇到的各种问题

    1. 解决办法: pthread不是Linux系统的默认库,编译时加上-lpthread参数,以调用链接库 gcc -o 文件名.out 文件名.c -lpthread 输出的时候直接 ./文件名.o ...

  2. css 两边是线,中间文字的多种实现方法

    <div class="soild_text_one"> <fieldset> <legend>历史活动一</legend> < ...

  3. Spring Boot,Spring Data JPA多数据源支持配置

    1 配置文件 wisely.primary.datasource.driverClassName=oracle.jdbc.OracleDriver wisely.primary.datasource. ...

  4. 2018-8-10-win10-UWP-button

    title author date CreateTime categories win10 UWP button lindexi 2018-08-10 19:16:53 +0800 2018-2-13 ...

  5. shell数组变量

  6. vue 2.1.3 实时显示当前时间,每秒更新

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. JavaScript常见设计模式梳理

    单例模式 单例模式,顾名思义就是保证每个类都只有一个实例对象. 其实现思路很简单,先判断实例是否存在,如果不存在则创建新的实例返回,如果存在则直接返回该实例. 策略模式 策略模式可以理解为:封装多个可 ...

  8. JMeter Http请求之content-type用法

    转载自https://www.cnblogs.com/imyalost/p/6726795.html 本文讲三种content-type以及在Jmeter中对应的参数输入方式 第一部分:目前工作中涉及 ...

  9. 聊一聊JavaScript中的事件循环

    一.概念:事件循环 JavaScript是单线程的 1.整片 script 整体代码(第一个宏任务)放到执行栈中,执行之后,会触发很多方法 这些方法只能一个个的顺序执行,不能并发 2.这些要执行的方法 ...

  10. 【LeetCode 6】Z 字形变换

    题目链接 [题解] 还想着模拟这个过程.然后发现只有行有用啊!... 那就建个rows大小的字符串数组存每行从左到右的字符就行啦.. 然后就是i从1变到n然后又变回1反复就好了. 最后把1..rows ...