分布式版本控制工具 Mercurial 使用教程 (hg 入门简略命令)

分布式版本控制工具 Mercurial 使用教程 (hg 入门简略命令)

分布式版本控制工具 Mercurial 使用教程 (hg 入门简单命令)

1. 安装版本控制Mercurial
直接下载使用Mercurial安装包进行傻瓜式安装,无需解释一用就灵
*改版本控制工具的命令都是以hg开头
2. 检查是否安装好。
   a. 使用命令  hg version 如果安装成功会显示类似下面的版本信息
   Mercurial Distributed SCM (version 0.7)
Copyright (C) 2005 Matt Mackall <mpm@selenic.com>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
b. 直接输入命令 hg,可显示基本常用hg命令列表

3. 需要了解hg有那些命令
a. 直接输入命令 hg 显示基本列表。
b. 输入 hg help -v 显示全部命令 (包括名字的参数)

4. 克隆代码仓库
a. 克隆远程仓库到本地并创建my-hello的文件夹在存放
hg clone http://www.selenic.com/repo/hello my-hello
(注意,my-hello文件夹会创建在当前文件夹下面,克隆时应注意当前文件路径是否正确)
如果所有都没问题,clone 命令输出:

requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files

b. 克隆当前代码仓库 my-hello文件到别处 my-hello-test
hg clone my-hello my-hello-test
(注意,需要退到my-hello到上一级目录执行。
在 Mercurial 中, 每一个仓库是自包含的。当你克隆一个仓库后,新仓库变成克隆时它的精确复本,
但是后续的两个仓库当中任一方改变都不会在对方显示,除非你用 Pull 或 Push 明确地传递改变。 )

5. pull命令
这个命令所有在别的仓库中有而在本仓库中没没有的 ChangeSet 从别的仓库 Pull 到本仓库。
hg pull
(注意路径,该命令会检查所有当前路径的远程文件版本看是否有当前仓库没有的文件
在 Pull 后,缺省情况下 Mercurial 不更新工作目录。这意味着虽然 Repository 现在有变更集,
但在工作目录中的 hello.c 文件仍然是Pull 之前老的内容。)

6. update命令
我们可以用以下Mercurial的提醒来 Update 这个文件 (也包括所有其它 Pull 时改变的文件)。
hg update

7. commit命令
创建一个变更集的动作称为提交它。我们用commit命令来执行提交。
hg commit提交修改到当前branch。需要加入注释才能完成提交。
hg commit -m ‘comments’,直接将‘comments’作为当前提交的注释。

8. merger命令
当我们运行hg update的时候常常遇到代码提交冲突,
也许是我们pull过来的代码和当前我commit的代码发生了冲突
merge命令是将当前版本冲突代码进行merge
hg merge 将冲突merge到branch,
hg update -C 放弃当前更改提交。
(注:如果你电脑安装了beyond compare软件的话,那么就会自动被调用,用来合并修改。)
如果我们没有安装图形合并程序, 我们就会开启文本编辑器来访问需要合并的文件。
用手工来做这些事情是非常容易出错并且繁琐的。
最好是退出编辑器并用hg rollback指令来清除["Pull"]带来的改变,然后安装合并程序,再做一次。

9. 其他命令
a. hg st 或者 hg status: 查看当前未提交的更新。如果没有则不显示
b. hg add <file> 将未加入索引的文件加入索引
c. hg add . 将当前目录下所有文件加入索引
d. hg ci -m 'comments' 另外一种提交方式
e. hg push -b <branch#> 将代码推送到相应到branch上
f. hg branch <branch#> 不加后面到参数就是显示当前到branch,加了表示创建一个branch
g. hg branches 查看所有分支
h. hg udpate <new branch> 切换分支到new branch
i. hg merge <branch#> 合并分支,如果不加后面参数,则是合并多人提交所有修改到当前分支
j. hg revert <filename> 在没有提交前对修改进行回滚。
k. hg revert -a 在没有提交前对当次所有修改进行回滚。
l. hg rollback 代码提交了一次,还原当次提交,只能还原一次。