zoukankan      html  css  js  c++  java
  • hg(Mercurial)使用参考

    使用hg(mercurial)有好几个月了,个人感觉这款分布式的版本控制系统非常不错,易学,易用;你可以从做在你旁边的同事拉取完整的代码; 对网络的依赖性更低,有本地沙盒,真正实现了离线开发; 轻量;安全,不会因为一两个节点的损坏而影响整个系统。这里做下使用笔记,脑子不好使,容易忘。

    安装:

    windows下的图形界面工具:http://tortoisehg.bitbucket.org/
    命令行:http://mercurial.selenic.com/
    Ubuntu安装方式:sudo apt-get mercurial

    Mercurial配置

    Linux/Mac: 在主目录创建一个.hgrc做为配置文件
    windows: xp中可以在C:\Documents and Settings下找到mercurial.ini,win7中没有的话就在C:\Users\[user]\下面创建一个
    在文件中配置用户名,写入:
    [ui]
    username = xwuxin
    #配置默认路径:
    [paths]
    default = http://www.xxxx.com/hg
    default-push = http://www.xxx.com/hg
    #配置授权,避免每次都输入用户名
    [auth]
    as3.prefix = https://bitbucket.org/xwuxin/xwuxinlibforas3
    as3.username = xwuxin
    as3.password = 123456

    php.prefix = https://bitbucket.org/xwuxin/xwuxinphp
    php.username = xwuxin
    php.password = 123456
    #设置使用 hg latest 命令来查看最近的 5 条 log
    [alias]
    latest = log –limit 5

    #设置扩展
    [extensions]
    #设置graph后,可以用hg glog来查看分支结构
    hgext.graphlog =
    #设置书签扩展
    hgext.bookmarks =

    创建分支

    hg branch branch-1
    hg ci -m’branch-1′ -u xwuxin
    hg push –new-branch
    #branch-1为分支的名称,创建后要提交,然后用hg branches才能看到所有的分支

    克隆仓库

    hg clone http://hg.xxxx.com/repo/enjoy enjoy

    克 隆完代码仓库之后,形成了三个区域。 一个是远程的代码仓库R, 一个是本地的代码仓库L, 另外一个是本地的工作区W, 对文件做修改之后,实际上是改动工作区中的文件, 执行提交命令之后进入本地的代码仓库,然后可以使用推送命令将本地代码仓库中的代码推送到远程的代码仓库。

    提交代码

    hg commit 后面可以指定具体要提交的文件
    比如:hg commit -m’修复编码的bug’
    如果是新加入的文件 先使用 hg add 命令加入 该命令实际上是提交到本地的仓库。

    推送代码

    hg push 将本地代码库L中的修改推送到远程代码库R中

    hg outgoing 指示查看要推送的代码,但不执行推送操作

    拉取代码

    hg pull 将远程的代码库R中的更新拉取到本地的代码库L
    把别的仓库中的 ChangeSet Pull 到本仓库
    $ hg pull ../my-hello-new-output

    在 Pull 后, 缺省情况下 Mercurial 不更新工作目录。这意味着虽然 Repository 现在有变更集, 但在工作目录中的文件仍然是Pull 之前老的内容。我们可以用以下Mercurial的提醒来 Update 这个文件 (也包括所有其它 Pull 时改变的文件)。
    $ hg update
    要看到修改还需要使用hg update 将本地代码库L中的更新应用到本地工作区W

    hg incoming 只是查看要推送的修改,但不执行拉取操作。

    合并代码

    hg merge 合并代码, 后面指定合并哪一个分支。 使用hg heads 查看有哪些分支。

    恢复代码

    hg revert [文件名]
    hg revert –all 恢复所有代码
    这里指的恢复代码是指恢复你未提交到本地仓库前当前的最新代码。

    查看状态hg status(短写:hg st)

    hg st
    M hello.c
    用于查看代码变更
    以 M 开头的行意思就是hello.c文件修改过

    export 命令(用于导出项目的一个tarball,方便发布。)

    必需提供一个 Tag, 版本号或 变更集号 来告诉 Mercurial 有什么进入了 导出(Export)
    $ hg export tip

    新建仓库

    直接在一个目录中使用 hg init 即可。

    启用hg自带的server
    sudo hg serve -p 8002
    #它会生成一个访问地址。

    查看文件差别

    先用hg log [文件名]查看版本
    hg diff -r 版本号1:版本号2
    用vim同样可以查看两个文件的区别
    vim -d [文件名1] [文件名2]

    恢复文件到特定的版本

    先用hg log [文件名]查看版本
    hg cat api.php -r 2009 > t.php
    t.php为新生成的文件,用原文件名会覆盖原文件。

    hgignore忽略设置

    在clone下来的文件夹目录下会发现一个文件.hgignore(注意是一个隐藏文件,需要打开显示隐藏文件的选项)
    # use glob syntax.
    syntax: glob
    #设置忽略后缀为bak,orig,swp的文件
    *.bak
    *.orig
    *.swp
    #设置忽略后缀为Thumbs.db的文件
    Thumbs.db

    其中第一行指定语法,这里是 glob。共有两个选择:
    regexp: Regular expression, Python/Perl syntax.
    glob: Shell-style glob

    hg log

    1. 查看指定版本的日志,比如查看changeset为3的日志
    hg log -r 3
    2. 查看多个版本的日志,比如查看1和4的
    hg log -r 1 -r 4
    3.使用范围标记显示多个版本日志,比如显示2,3,4三个版本的日志
    hg log -r 2:4
    4.显示摘要,比如显示changeset为3的
    hg log -v -r 3
    5.显示变更的描述和内容,增加-p选项。比如
    hg log -v -p -r 2
    可以使用短选项:
    hg log -vpr 2
    6.查看最近的几次提交,比如这里查看最近2次的提交
    hg log -l 2
    7.显示指定用户的提交
    hg log -u [用户名]
    8.

    hg heads

    1. 显示拓扑首
    hg heads -t

    hg tip

    显示版本库中最新的版本的信息,-v查看详细,-p输出补丁
    hg tip -vp

    从其它版本库取得变更:hg incoming ../my-hello //它会告诉我们hg pull将会把哪些变更拖进版本库,但不会真正的执行

    显示工作目录的版本:hg parents

    重新解决冲突:hg resolve “这里指定要解决冲突的文件”

    hg 提供了一个非常高效的命令用于添加所有新增文件以及剔除所有被删除了的文件,只需要在项目目录下或任意子目录下运行如下命令:

    hg addremove

    查看命令的使用方法

    hg help [命令名称]
    比如要查看log命令的使用方法:
    hg help log

    修改merge编辑器,本人用的vim,支持三路合并,可以在 ~/.hgrc 中加以更改,比如:

    [ui]
    username =
    editor = nano
    merge = XXX
    这样就配置了使用 nano 作为默认的编辑器,XXX 作为默认的 merge 工具。

    hg branch

    http://www.codingboy.com/zlog/post/21.html
    http://mercurial.selenic.com/wiki/Branch

    hg bookmark

    http://www.xwuxin.com/?p=1318

    Mercurial权威指南pdf版:  http://dl.dbank.com/c0i1vkx8r0
    官方wiki:http://mercurial.selenic.com/wiki/
    Mercurial hgrc mercurial.ini配置方法:http://www.selenic.com/mercurial/hgrc.5.html
    Redmine集成Mercurial:http://www.cnblogs.com/jinyong/archive/2009/03/22/1419129.html
    让Mercurial和TortoiseHg支持中文文件名/UTF-8:http://www.cnblogs.com/tinyfish/archive/2010/06/08/1754364.html
    从SVN到Mercurial的迁移(英):http://www.oschina.net/question/6981_20033
    git 的企业级授权工具 gitolite:

    http://weiye.info/blog/2011/01/git-auth-gitolite/
    http://www.ossxp.com/doc/git/gitolite.html

    some article for mercurial:

    http://www.denisdeng.com/?cat=184

    hg flow:yinwm老大参考gitflow写的一个插件,用于规范hg的工作使用流程,强烈推荐!
    https://bitbucket.org/yinwm/hgflow/wiki/Home

    本文来自:http://www.xwuxin.com/?p=1179

  • 相关阅读:
    SpringBoot Lombok使用详解1(基本介绍、安装配置、var和val)
    SpringBoot 实现文件上传2(多文件上传、常用上传参数配置)
    SpringBoot 解决跨域请求问题(No 'AccessControlAllowOrigin' header is...)
    SpringBoot 实现静态资源的访问(附:修改过滤规则、静态资源位置)
    SpringBoot 获取Get请求参数详解(附样例:非空、默认值、数组、对象)
    SpringBoot 实现文件上传1(单文件上传、常用上传参数配置)
    SpringBoot 获取POST请求参数详解(附样例:表单数据、json、数组、对象)
    SpringBoot @ControllerAdvice的使用详解3(请求参数预处理 @InitBinder)
    SpringBoot @ControllerAdvice的使用详解1(全局异常处理 @ExceptionHandler)
    解决自动禁用Flash打开摄像头询问
  • 原文地址:https://www.cnblogs.com/quinnxu/p/3067328.html
Copyright © 2011-2022 走看看