资料
了解分布式版本管理系统
http://code.google.com/p/kcpycamp/wiki/AbtDvcs
Init
初始化,创建一个空的仓库。
shell>>hg init
Clone
创建仓库的复本,创建的来源可以是一个http或ssh链接表示的仓库,也可以是本地仓库。
shell>>hg clone
Commit
提交,即接受所有的改动,将当前版本作为最新版本(也叫tip)。注意这个提交和集中式SCM不同,它只提交的本地仓库,而且本地仓库会 详细记录所有的变动(称为变更集或改动集)。
不影响别人的仓库。
Revert
指恢复,撤销所有的改动,恢复到未更改的状态。
Pull
拉,是将其他仓库有,而当前仓库没有的变更集“下载”到当前仓库。不过这只是添加了变更集,文件并不会改动。
(变更集有一个唯一的 hash标识,所以很容易区分。)
Update
更新,当获取了其他变更集,且需要更改以保持和其他仓库一致时,就可以执行它了。
Push
推,就是将当前仓库的变更集“上传”到其他仓库去。其他仓库必须支持该操作,并可能需要经过验证。如果是从本地仓库A push到本地仓库B,就相当于用B pull A。此外,push也不会更新仓库的版本,因为它是共享的,需要的人直接选择想要的版本即可。
Merge
合并。当一个文件同时被多次修改,并存放在多个仓库时,要获得一个统一的版本,就需要合并。对于翻译而言,一个文本可能同时会分给多个人,于是合并时只需要接受每个人的改动即可。
实例:
克隆仓库
shell>>hg clone http://www.selenic.com/repo/hello my-hello
帮助命令
shell>>hg help command
ex:hg help resolve
查看当前分支
shell>>hg branch
查看所有分支
shell>>hg branches
切换到default分支
shell>>hg update default
切换到某一分支,且忽视没有commmited的changes
shell>>hg update -C branchname
检查仓库历史
shell>>hg log
查看最近的几个变更集
shell>>hg log -l 5
删除未曾控制的文件
shell>>hg purge
编辑hgrc文件
cd my-hello/.hg
sudo vim hgrc
查看状态(是否有变更)
shell>>hg status
M hello.c 以 M 开头的行意思就是hello.c文件修改过
使用 diff 命令检查文件实际的改变
查看当前变更集的变化
shell>>hg diff
查看特定两个变更集之间的变化
shell>>hg diff -r 82e55d328c8c -r 8207c971f52f
放弃变更
放弃最近的一次变更
shell>>hg revert
回退到某一个特定的变更集
shell>>hg revert -a 8207c971f52f
创建一个变更集(提交)
$ hg commit -m 'fix'
tip 命令来找出最后一个变更集
列出最后一个变更集的信息
shell>>hg tip
列出最后一个变更集的“changeset”号
shell>>hg -q tip
把别的仓库中的 ChangeSet Pull 到本仓库
shell>>hg pull ../my-hello-new-output
在 Pull 后, 缺省情况下 Mercurial 不更新工作目录。这意味着虽然 Repository 现在有变更集, 但在工作目录中的文件仍然是Pull 之前老的内容。我们可以用以下Mercurial的提醒来 Update 这个文件 (也包括所有其它 Pull 时改变的文件)。
shell>>hg update
更新代码(pull+update+merge)
shell>>hg fetch
export
命令必需提供一个 Tag, 版本号或 变更集号 来告诉 Mercurial 有什么进入了 导出(Export)
$ hg export tip
合并冲突
shell>>hg merge
merge时发生冲突,查看所有有冲突的文件
查看代码分支情况
shell>>hg heads
shell>>hg resolve -l
冲突解决,生成变更集
shell>>hg rersolve -m filename 冲突已被解决的文件名
shell>>hg add filename
shell>>hg rm filename
合并某一分支代码回defualt的步骤
branch1
shell>>hg commit -m 'fix'
shell>>hg push
shell>>hg update default
default
shell>>hg merge branch1
if has conflicts
shell>>hg resolve -l
reslove conflicts
shell>>hg resolve -m filename
shell>>hg push
从远程pull代码,并解决冲突的过程
hgrc中
42qu = ssh://hg@bitbucket.org/zuroc/zpage
shell>>hg pull 42qu
shell>>hg update
当pull来的仓库中存在多个分支时,update将不成功。
shell>>hg heads
在一个仓库中可以存在多个分支,每个分支都有 HEAD,但是整个仓库整体来看只有一个 TIP。
shell>>hg merge 变更集号
如果该变更集和本地的最新的变更集存在冲突,需要解决冲突。
shell>>hg resolve -l
U:unresolved的文件
R:resolved的文件
重新merge所有文件
shell>>hg resolve -all
解决冲突后,将对应的文件标记为resolved
shell>>hg resolve -m filename
shell>>hg ci -m 'merge finished'
shell>>hg push