分布式版本控制工具Mercurial------Linux下hg命令的使用
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命令的使用的更多相关文章
- 分布式版本控制工具:git与Mercurial(zz)
分布式版本控制工具:git与Mercurial [收藏此页] [打印] 作者:cyfdecyf 2007-12-26 内容导航: 第1页 [IT168 技术文档] 说到版本控制工具,很 ...
- 痞子衡嵌入式:备受开源社区推崇的分布式版本控制工具(Git)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是分布式版本控制工具Git. 1.为什么需要版本控制系统? 单人软件项目开发过程,往往很多功能都是逐步增加的,在代码开发过程中,有的时候功 ...
- 开源分布式版本控制工具 —— Git 之旅
Git 主张的分布式代码库与文件快照的设计思想,相对于传统 CVS.SVN 等集中式.文件差异式版本控制工具是一种挑战与颠覆.Git 带来了离线提交.轻量级分支等诸多便利.不过,也有人质疑 Git 的 ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- 例解 Linux 下 Make 命令
Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...
- linux下svn命令使用大全
最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...
- linux下tar命令详解
linux下tar命令详解 tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...
- Linux下svn命令详解
本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...
- linux下svn命令大全
linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/p ...
- Linux下chkconfig命令详解(转)
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
随机推荐
- redis性能
- OpenGL学习——绘制第一个三角形
终于把三角形绘制出来了,首先一些关键概念.操作. Vertex Data 顶点数据 VBO Vertex Buffer Objects 顶点缓冲对象 VA ...
- Kali Linux 开启SSH
Kali Linux安装好默认是不开启ssh的,需要手工开启 1.修改/etc/ssh/sshd_config 配置文件: root@mykali:~# vi /etc/ssh/sshd_confi ...
- ChainMap & python args parse
python的内建模块ChainMap可以把一组dict串起来并组成一个逻辑上的dict.ChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找. 什么时候使用Cha ...
- 开机流程 模块管理 Loader
主机系统开机流程 boot loader 主要功能 显示核心模块加载信息 查询模块信息 核心模块的加载与移除 boot loader 的两个 stage grup2配置文件 /boot/grub2/ ...
- 【NOI2019模拟2019.6.29】字符串(SA|SAM+主席树)
Description: 1<=n<=5e4 题解: 考虑\(f\)这个东西应该是怎样算的? 不妨建出SA,然后按height从大到小启发式合并,显然只有相邻的才可能成为最优答案.这样的只 ...
- 八年技术加持,性能提升10倍,阿里云HBase 2.0首发商用
摘要: 早在2010年开始,阿里巴巴集团开始研究并把HBase投入生产环境使用,从最初的淘宝历史交易记录,到蚂蚁安全风控数据存储,HBase在几代阿里专家的不懈努力下,已经表现得运行更稳定.性能更高效 ...
- Java打war包or打jar包
//一个jar包可以包含多个entry,这样就能实现下面功能 1.I/O 读文件流步骤 File file=new File(filePath); ...
- 深入浅出 Vue.js 第九章 解析器---学习笔记
本文结合 Vue 源码进行学习 学习时,根据 github 上 Vue 项目的 package.json 文件,可知版本为 2.6.10 解析器 一.解析器的作用 解析器的作用就是将模版解析成 AST ...
- python Map()和reduce()函数
Map()和reduce()函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函 ...