Mercurial命令手册(中文版)

Mercurial命令手册  


cd C:\Python26\Lib\site-packages\mercurial
安装:

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

Linux/Mac: 在主目录创建一个.hgrc做为配置文件
windows: xp中可以在C:\Documents andSettings下找到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 //它会告诉我们hgpull将会把哪些变更拖进版本库,但不会真正的执行

显示工作目录的版本: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 hgrcmercurial.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


hg version
output version and copyright information(输出当前hg的版本号信息)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mercurial 分布式版本管理工具 版本控制的发展趋势 在过去的四十年中,随着人们越来越熟悉他们的工具的能力和限制,开发和使用版本控 制工具出现了明确的趋势。 第一代软件开始于在个人计算机,人们用这些软件管理单个文件。虽然这些工具比手工 管理版本有了巨大的飞跃。但是加锁模型和依赖于单个计算机限制了他们使用范围,只用于 小的,组织严密的团队。 第二代软件放松了这些限制,因为它们采用了以网络为中心的结构,并且能够一次管理 整个项目。随着项目增长,又出现了新的问题。客户需要频繁的和服务器交互,服务器的可 伸缩性成为大项目的主要问题。不可靠的网络会妨碍客户和服务器的交互。随着开源项目开 始开放只读权限给匿名用户,没有提交权限的用户发现他们不能以自然的方式使用工具和项 目交互,因为他们不能记录他们的修改。 新一代的版本控制工具本质上是点对点的。所有的这些系统都抛弃了对单个中央服务器 的依赖,允许用户将他们的版本控制数据发布到任何需要的地方。通过互联网的协作摆脱了 技术的限制,走向选择和审查。现代的工具可以进行自治的,不受限制的离线操作。只需要 在有网络的时候和其他的版本库同步即可。 分布版本控制的优点 与它们的上一代竞争者相比,虽然分布式版本控制工具多年来已经很稳定和实用了,但 是旧的工具的使用者还没有完全了解它们的优点,分布式的工具在很多方面明显由于集中式 的工具。 对于个人开发者,分布式工具几乎永远比集中式工具快的多。原因很简单:集中式工具 的很多操作需要网络交互,因为大部分元数据都只在中央服务器上有一份拷贝。而一个分布 式工具将所有的元数据保存在本地。其他的相同,通过网络的交互增加了集中式工具的负 担。不要低估了反应迅速的工具的价值:你要花很多时间和你的版本控制软件交互。 分布式工具对你的服务器结构并不感冒,因为他们在将元数据复制到很多地方。如果你 的集中式系统和你的服务器着火了,你最好希望你的备份介质是可靠的,同时你最后的备份 是最近的,而且还能用。而对于分布式工具,你在贡献者的计算机上有很多备份。 网络的可靠性对分布式工具的影响要远远小于集中式工具。如果没有网络你根本不能使 用集中式工具,除了少数几个功能有限命令。而对于分布式工具,即使在你工作的时候网络 瘫痪了,你可能根本不会注意到。你不能做的事情仅仅是不能和其它计算机上的版本库交互 了,这种情况在本地操作相当罕见。而如果你的团队有异地的人员,那这就很有可能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值