HG 使用指南
关于 hg 命令选项
hg 有很多命令,这些命令都有一定的选项,在开始的时候,只知道用它,有时候命令选项以”–”开头,有时又以”-”开头。
翻阅资料,发现对于命令选项,hg 有以下的约定。
1. 每一个命令选项都有一个长的名称,如 hg log 命令会使用 –rev 选项;
2. 大多数选项拥有一个短的名称,如—rev 有一个-r 的短名;
3. 长名称以两条横线(–)作为起始,短名起始是一条横线(-)。如—rev、-r;
4. 无论是长名还是短名,其用途是一致的。如-r 和—rev 其后都跟一个变更集合的 ID 或版本号;
5. 如果使用的是短名,多个名称可以连在一起运行。如 hg log –v –r –p 2 可以写作 hg log –vpr 2。
克隆代码
第一次取得代码需要克隆代码仓库,hg clone hp://XXXX
拉取和推送代码
拉取代码,使用 hg pull 即可,有一个 hg incoming 命令我很少用到,仔细看了看,这个命令还是很管用。hg incoming
命令不会真正的拉取代码到本地仓库,它只是告诉你使用 hg pull 会将哪些变更集合拉至本地仓库。这对于你拉取特定的版本集
合很管用。
推送代码,使用 hg push 即可。在真正推送之前,可以使用 hg outgoing 查看有哪些改变将会被推送至代码仓库。
在项目推进的过程中,经常会出现两个人共同修改一个文件的情况。这个时候,我们就要进行代码合并。使用 hg 合并
代码非常简单。Hg 记录每一次变更集合的父级,如果变更集合一个父级,一个 head 就是一个没有子级的集合。当多人修改同
一个文件时,就会出现不止一个 head 的情况,此时需要进行代码合并。
如果一个文件同时被几个人修改,hg pull 命令会告知你”heads”的情况。此时如果使用 hg update 命令,会出现以下的
提示语:abort: crosses branches (use ‘hg merge’ or ‘hg update -C’)
如果要强制更新,可以使用 hg update –C。要查看 heads 可以使用 hg heads 命令,该命令会告知你 head 的情况,使
用 hg merge 就会完成两个 head 之间的代码合并。此时使用 hg parents 命令会看到父级的情况。在完成代码合并之后,一定
不要忘记使用 hg commit 命令提交更改的代码。
大多数情况下,代码合并都很简单。但是,如果多个人修改文件的同一个地方,情况就有所不同了。除非修改的内容一
样,否则会导致冲突发生。Hg 不能很好的处理这些冲突,但是它能运行外部程序来处理这些冲突,如 kdiff3。这种合并就是所
谓的“三路合并”(three-way merge)。此时,窗口会被分成三部分:
1. 左边是文件的的基础版本;
2. 中间是你自己的版本,文件包括被修改的内容;
3. 右侧是你将要与之合并的版本。