hg 的使用简介
克隆仓库
仓库是一个目录,它包含所有我们希望保留历史的源代码和这些源代码的历史记录。
克隆就是生产一个仓库的副本,这样可以有一个本地私有的仓库来工作.
hg clone http://远程仓库地址:端口
需要说明的是:在 Mercurial 中, 每一个仓库是自包含的。当你克隆一个仓库后,新仓库变成克隆时它的精确复本, 但是后续的两个仓库当中任一方改变都不会在对方显示,除非你用 Pull 或 Push 明确地传递改变。
本地克隆
hg clone curRepoPath toRepoPath
查看仓库的历史
hg log
$ cd my-hello
$ hg log
changeset: 1:97455d972b91
tag: tip
user: mpm@xxx.com
date: 2014-06-19
summary: Create a file
changeset: 0:97455d972b91
tag: tip
user: mpm@xxx.com
date: 2014-06-19
summary: Create a file
changeset 标识了一个 改变集.
冒号前面的数字代表版本号; 它是一种标识改变集的本地缩写.只是在你的本地仓库中这个版本号才有意义.
冒号后面的那个很长的十六进制串是 ChangeSetID; 它是标识改变集的全局唯一标识符, 在所有包含这个改变集的仓库中都相同. 如果你正在和其他人讨论某个改变集,请使用这个 ChangeSetID,而不是上面说的版本号.
查看指定版本号的改动,并且显示改动在哪
hg log -r版本号 -p
处理改动
与仓库同步后,如果本地有任何改动,则hg自动给我们生成了一个变更集(changeset,简写为 cset),
它自动收集记录了本地仓库(俗称版本库)中的文件的任何改动,用 changeset ID 唯一标识(identify)一个变更集.
查看变更:
hg status 或简写 hg st
查看改动:
hg diff
放弃变更并重新开始:
hg revert hello.c 或者用--all选项来恢复所有文件
revert重命名被编辑文件hello.c为hello.c.orig并恢复hello.c到它的未编辑状态。 status命令现在会将hello.c.orig视为不被追踪的(以"?"为前缀)。
如果我又改变主意想要重用我做的修改,我只需要移除未编辑状态的hello.c然后重命名我改过的hello.c.orig为hello.c
rm hello.c
mv hello.c.orig hello.c
hg st
M hello.c
执行提交
hg commit
第一次,通常会出现
abort: no username supplied
这使因为没有配置本地仓库使用者的用户名,可以去.hg目录下简历hgrc文件,
[ui]
username = yourname
或者是这样
hg config --edit
设定username后,再次commit,会出现一个编辑框,提示要输入一些变更信息
如果不习惯那样,那么可以这样
hg commit -m 'Add description of xxxxxx'
与别的仓库分享改变
查看其他仓库的状况
可以使用 tip 命令来找出每一个仓库的Tip(Tip 是最后一个变更集).
localhost:my-hello cyk$ hg tip<br>
changeset: 2:b5b427d8a2ef
tag: tip
user: CodingLion
date: Thu Jun 19 22:50:11 2014 +0800
summary: have anything to say?
localhost:my-hello cyk$ hg tip
changeset: 3:863a46da4e7a
tag: tip
user: CodingLion
date: Thu Jun 19 22:52:11 2014 +0800
summary: wo qu !
可以看到,tip在不同的仓库中是不同的.
别人有,我也要有,pull之,
这个命令所有在别的仓库中有而在本仓库中没有的 变更集 从别的仓库拉到本仓库。
我有,别人没有,push之.
合并改变
已经对 A 仓库中的 hello.c 作了一个变更 , 同时对 B 仓库 中的 hello.c 作了另一个变更. 怎样合并这两个分叉开发主线?
hg pull B
hg merge
但是, 经常是不能自动合并的,因为同样源文件的相同的代码在每个ChangeSet中被不同的方式更改(一个是我们提交的更改方式,一个是我们[Pull]来的)。
hg merge时,会发生什么决定于电脑中安装了什么样的程序。如果装了图形的合并程序,我们就能够看到在两个更改之间发生了什么冲突,并决定如何去做。
三路合并,分别是:
- 本地文件(当前仓库)
- 其它文件(正在被合并的仓库)
- 基文件 (在分支分开前的最后一个版本)
hg 的使用简介的更多相关文章
- 开源地图SharpMap源码解析-(1)简介
1.简介 SharpMap最新版基于.NET Framework 4,采用C#开发的地图渲染引擎,非常易于使用.我这次研究的是比较稳定发布的V1.1版本.可以在GitHub下载该源码,地址:https ...
- Python生态环境简介[转]
Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy 原译: Python生态环境简介 当 ...
- Android—SDCard数据存取&Environment简介
1:Environment简介: Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供 ...
- mysql读写分离——中间件ProxySQL的简介与配置
mysql实现读写分离的方式 mysql 实现读写分离的方式有以下几种: 程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配,需要开发人员协助. am ...
- (转)python生态环境简介
Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy 原译: Python生态环境简介 当 ...
- RDLC系列之一 简介和入门
一.简介 RDLC报表,通过Report Viewer Control来实现,制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集):2.制作自己的报表文件.rdl ...
- Mercurial(Hg)基本操作
Mercurial(Hg)基本操作 来源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html Mercuria ...
- 版本管理工具git与svn简介
版本管理工具 版本管理工具简介 常见版本管理工具 cvs(Concurrent Versions System) vss(Visual SourceSafe) svn 常用的版本管理工具 git 流行 ...
- Python学习(二)Python 简介
Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...
随机推荐
- PHP数组
PHP数组的遍历 使用for语句循环遍历数组 在PHP中,不仅可以指定非连续的数字索引值,而且还存在以字符串为下表的关联数组.所以在php中很少使用for语句循环来遍历数组.使用for语句遍历连续数字 ...
- 移动端框架篇-控制父容器的滑屏框架-slip.js
设计滑屏框架的办法一般有2种 控制父容器法 控制子容器法 这个算是控制父容器法 通过控制父容器的transform: translateY或margin-top或top的值来上下滑动页面,每次的位移的 ...
- 【Bootstrap】Bootstrap-select多选下拉框实现
目录 前言 需要引用的它们 核心选项 核心方法 实例应用 回到顶部 前言 项目中要实现多选,就想到用插件,选择了bootstrap-select. 附上官网api链接,http://silviomor ...
- MSYS2的源配置
关于MSYS2的文章可以参考下面的链接,笔者不多赘述: msys2安装笔记 MSYS2 + MinGW-w64 + Git + gVim 环境配置 msys2环境搭建 msys2安装g++: pacm ...
- JSP入门
JSP简介 所谓JSP就是在网页文件中嵌入Java代码或JSP定义的一些标记.JSP是建立在Servlet上的,在执行时JSP容器会先将JSP文件转换成Servlet文件以及class 文件,然后再执 ...
- Alpha总结
一.预期计划 1.时间:11月7日--11月17日 2.小组分工 角色:程序员.美工.文档.测试 这个阶段以编码为主,每个组员参与编码,同时各自根据自己擅长的方面主要负责一个部分. 项目编码工作分工: ...
- 提高MYSQL百万条数据的查询速度
提高MYSQL百万条数据的查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 nul ...
- 第七届山东省ACM省赛
激动人心的省赛终于结束了…平静下来再回头看真的感觉一波三折…先是赛前毫无预兆的查出突发性耳聋…伴随而来的就是左耳听力下降.轻微耳鸣.极个别情况下的头晕…不过这都还好,毕竟药物可以恢复…热身赛只过了一道 ...
- JS 删除对象属性
updateNode: function(data) { if(data) { this.root[data.id] = data; } }, removeNodes: function(idsArr ...
- ++i vs i++
[分析] i++与++i哪个效率更高? (1)在内建数据类型的情况下,效率没有区别: (2)在自定义数据类型Class的情况下,++i效率更高! 自定义数据类型的情况下:++i返回对象的引用:i++总 ...