克隆仓库

仓库是一个目录,它包含所有我们希望保留历史的源代码和这些源代码的历史记录。

克隆就是生产一个仓库的副本,这样可以有一个本地私有的仓库来工作.

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时,会发生什么决定于电脑中安装了什么样的程序。如果装了图形的合并程序,我们就能够看到在两个更改之间发生了什么冲突,并决定如何去做。

三路合并,分别是:

  1. 本地文件(当前仓库)
  2. 其它文件(正在被合并的仓库)
  3. 基文件 (在分支分开前的最后一个版本

hg 的使用简介的更多相关文章

  1. 开源地图SharpMap源码解析-(1)简介

    1.简介 SharpMap最新版基于.NET Framework 4,采用C#开发的地图渲染引擎,非常易于使用.我这次研究的是比较稳定发布的V1.1版本.可以在GitHub下载该源码,地址:https ...

  2. Python生态环境简介[转]

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  3. Android—SDCard数据存取&Environment简介

    1:Environment简介: Environment是android.os包下的一个类,谷歌官方文旦的解释为:Provides access to environment variables(提供 ...

  4. mysql读写分离——中间件ProxySQL的简介与配置

    mysql实现读写分离的方式 mysql 实现读写分离的方式有以下几种: 程序修改mysql操作,直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配,需要开发人员协助. am ...

  5. (转)python生态环境简介

    Python生态环境简介 作者: Mir Nazim 原文: Python Ecosystem - An Introduction 译者: dccrazyboy  原译: Python生态环境简介 当 ...

  6. RDLC系列之一 简介和入门

    一.简介 RDLC报表,通过Report Viewer Control来实现,制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集):2.制作自己的报表文件.rdl ...

  7. Mercurial(Hg)基本操作

    Mercurial(Hg)基本操作 来源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html Mercuria ...

  8. 版本管理工具git与svn简介

    版本管理工具 版本管理工具简介 常见版本管理工具 cvs(Concurrent Versions System) vss(Visual SourceSafe) svn 常用的版本管理工具 git 流行 ...

  9. Python学习(二)Python 简介

    Python 简介 官方指南及文档 Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr Python3.4官方指南(中文版):http://pan.b ...

随机推荐

  1. 外景VR的应用

    留坑,续写. 最近在做外景的项目,被相关的帧率优化和灯光布置困扰的不要不要的.下面写下我是怎么优化帧率和对帧率的一些理解. 帧率,游戏的重要影响因素,会对玩家的手感以及视觉产生重大的影响,一般的游戏帧 ...

  2. Spring系列之谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  3. [译]merge vs rebase

    git rebase和git merge设计的初衷是解决相同的一件事, 即把一个分支合并到另外一个分支--只是他们两个处理的方式非常不一样. 当你在一个特定的分支开发新功能, 团队的其它成员在mast ...

  4. Android Activity的加载的模式

    ---恢复内容开始--- 本文来自http://www.cnblogs.com/lwbqqyumidi/p/3771542.html launchMode在多个Activity跳转的过程中扮演着重要的 ...

  5. Codeforces VK CUP 2015 D. Closest Equals(线段树+扫描线)

    题目链接:http://codeforces.com/contest/522/problem/D 题目大意:  给你一个长度为n的序列,然后有m次查询,每次查询输入一个区间[li,lj],对于每一个查 ...

  6. linux c 笔记-3 c语言基础知识

    关键字 数据类型: 简单(7):int long short float double char enum 复杂(2):struct union 类型修饰符(8):auto unsigned sign ...

  7. 我与A协

    大学毕业以后发现离曾经的圈子越来越远,非常怀念原来在A协和大家一起奋斗的日子,在这里写一篇文章,献给有很多美好回忆的A协,也献给渐渐远离A协的我. 首先,回顾一下我为什么会参与到A协的建设工作中来.我 ...

  8. Pycharm用Ctrl+鼠标滚轮调节代码字体大小

     File --> Setting --> Editor --> General --> 勾选Change font size (zoom) with Ctrl+Mouse W ...

  9. js 中 Math对象

    Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法.这是它与Date,String对象的区别. Math 对象属性 Math 对象方法

  10. 【学习笔记】ionic 学习之环境搭建

    初学ionic ,后面会把学习的点滴和踩到坑全部记录下来 1.环境 安装node.js 官网地址:https://nodejs.org/en/ 下载安装包安装.自己记住自己的安装路径哦 安装完成后我们 ...