博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
版本控制之hg
阅读量:5754 次
发布时间:2019-06-18

本文共 2655 字,大约阅读时间需要 8 分钟。

资料

了解分布式版本管理系统

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

 

转载于:https://www.cnblogs.com/huhuchen/archive/2012/04/25/2470492.html

你可能感兴趣的文章
linux 下改变文件所属 chown
查看>>
2014十佳IDC评选-专访互联通华南区总经理黄健忠
查看>>
tomcat读码记录 - 调试断点
查看>>
全球.win域名总量10强:排名微变 新网跌至第七
查看>>
我的友情链接
查看>>
Java开源诊断工具 Arthas 发布v3.1.0
查看>>
阿里技术男的成长史:越想证明自己死得越快……
查看>>
ubuntu+nginx+php7+mysql 安装
查看>>
避其锋芒 Linux操作系统***技巧
查看>>
感觉应该为之前的几个月job-hunting做个总结
查看>>
JVM参数典型配置
查看>>
编译器链接启动代码crtexe.c
查看>>
yum的使用总结
查看>>
好程序员web前端分享用CSS和JS打造一个简单的图片编辑器
查看>>
编译php5.3.*时报gd_compat.c:4:18: error: png.h和gd_compat.c:8:22: error: jpeglib.h错误
查看>>
DNS服务器学习笔记(一)原理理论
查看>>
C#将DataGridView导出到csv文件
查看>>
谈学习的重要性
查看>>
android view getWidth 和 getHeight 的值为0
查看>>
.NET设计模式(1):1.1 单例模式(Singleton Pattern)
查看>>