hg(Mercurial)使用参考
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 = 123456php.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中的更新应用到本地工作区Whg 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
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:
hg flow:
yinwm老大参考gitflow写的一个插件,用于规范hg的工作使用流程,强烈推荐!
https://bitbucket.org/yinwm/hgflow/wiki/Home
hg(Mercurial)使用参考的更多相关文章
- Hg(Mercurial)版本管理学习
1.关闭分支,首先切到你要关闭的分支 hg commit --close-branch -m. 2.仓库ip地址改变之后,重设仓库ip 找到.hg文件夹 - hgrc文件 - 记事本打开重设 3.推分 ...
- hg(Mercurial)版本库迁移到git版本库
这几天没事干净搞迁移了,迁移完MVC又迁移版本库,还把工作电脑迁移了一下,开始用Win8.1了.这个迁移主要是因为实在不想在工作电脑上又装git又装hg了,点个右键出来一大堆菜单,况且现在git已经成 ...
- ubuntu下如何安装hg(mercurial)?
答: sudo apt-get install mercurial
- 袭击Mercurial SCM(HG)
这个叫水银的源代码管理工具尽管默默无闻,但还是得到了非常多团队的使用. 为了迎合某些团队的须要,我们也要用它来管理我们的代码. 今天的任务是先袭击学习.磨刀不误砍柴工. 对工具的掌握越快.工作的效率就 ...
- 部署搭建 Saltstack(centos6.6)
SaltStack介绍 官网:https://docs.saltstack.com/en/latest/ 中国saltstack用户组http://www.saltstack.cn/ 下图是它的子系统 ...
- WEB中的敏感文件泄漏
文件泄露, 根据泄漏的信息敏感程度, 在WEB漏洞中可以算是中危甚至高危的漏洞, 本篇文章就来 介绍下一些常见的泄漏, 主要分为由版本管理软件导致的泄露, 文件包含导致的泄露和配置错误导致的泄露. 版 ...
- Revel框架学习
1.准备工作 revel的下载需要git和hg(mercurial)工具,请先安装这两个工具. 配置好GOROOT和GOPATH环境变量,源码会默认下载到GOPATH第一个目录的src目录下. 一般g ...
- slatstack Master的配置
Salt系统非常简单并且易于配置,Salt系统的两个组件都有各自的配置文件.如"salt-master"是通过主配置文件来配置的,"salt-minion"是通 ...
- 初窥软件工程 2020BUAA软件工程$\cdot$个人博客作业
初窥软件工程 2020BUAA软件工程\(\cdot\)个人博客作业 目录 初窥软件工程 2020BUAA软件工程$\cdot$个人博客作业 一.作业要求简介 二.正文 (一) 快速看完整部教材,列出 ...
随机推荐
- 编辑器IDE之VSCode
很多时候面临换项目组,公司内部换等等,需要清除之前的权限,电脑更换等... 确实很烦人,所以记录也是给自己下次更加快速方便的使用 插件安装 个人常用的一些插件,发现好用的会更新 插件名 功能 vsco ...
- python-event事件-模仿红绿灯
import time import threading event =threading.Event() def lighter(): count=0 event.set()#先设置成绿灯 whil ...
- 【Java】 Java多线程(一)
一.对线程的理解 1.线程概念 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行 ...
- k8s第一个脚本:hello world
1.hello-world-pod.yaml 脚本: # cat hello-world-pod.yaml apiVersion: v1 kind: Pod metadata: name: hello ...
- tar/gzip/zip文件打包、压缩命令
一.tar打包备份工具 1.命令功能 tar 将多个文件或目录打包在一起,可用通过调用gzip或zip实现压缩.解压的命令:tar不仅可以多多个文件进行打包,还可以对多个文件打包后进行压缩. 2.语法 ...
- linux tar压缩解压命令的详细解释
tar [-cxtzjvfpPN] 文件与目录 参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意 ...
- Python中的十大图像处理工具
转自:微信博客 机器学习研究会订阅号 微信号 功能介绍机器学习研究会由百度七剑客雷鸣先生创办,旨在推动AI的技术发展和产业落地.参与组织北大.清华”AI前沿与产业趋势“公开课,广泛的和高校.企业.创业 ...
- java模拟验证码生成
设计思想 第一步:随机生成字符串 第二步:用户输入字符串 第三步:将两个字符串转化为同一类型 第四步:比较是否相同 第五步:输出结果 程序流程图 程序源代码 /*2017/10/7 王翌淞 验证码模拟 ...
- 【Luogu5294】[HNOI2019]序列
题目链接 题意 给定一个序列,要求将它改造成一个非降序列,修改一个数的代价为其改变量的平方. 最小化总代价. 另有\(Q\) 次询问,每次修改一个位置上的数.(询问之间独立,互不影响) Sol 神仙 ...
- npm 全局安装和局部安装的区别
上图是从网上找的webpack 安装的步骤,我们看到除了要全局安装之外,还需要本地安装,那么这两者有什么区别呢? 本文以Windows平台上做测试,以webpack为示例做教程 什么是全局安装? 安装 ...