Mercurial 使用记录

配图源自 Freepik

Mercurial 也是一个分布式版本控制系统,主要使用 Python 语言编写的。
其使用化学元素「汞」的元素符号「Hg」小写形式 hg 作为命令。

安装 Mercurial

$ brew install mercurial

修改配置文件 ~/.hgrc(若无则新增),主要是修改 usernameemail address

[ui]
username = frankie 

Use hg config to configure a user name, email address, editor, and other preferences once per machine.

初始化/克隆仓库

# 初始化
$ hg init

# 克隆远程仓库
$ hg clone  [repo-name]

创建分支

# 创建新分支
$ hg branch 

# 只有提交一个 commit,新分支才算真正被创建。
# 可提交一个「空」的 commit,比如:hg commit
$ hg commit -m "create '' branch"

# 提交新分支到远程仓库
$ hg push --new-branch

查看/切换分支

# 查看当前分支
$ hg branch

# 查看所有分支
$ hg branches

# 切换分支
$ hg checkout 

合并分支、关闭分支

假设有 defaultfeature 分支,将 feature 合并至 default。操作如下:

# 切换至 feature 分支,然后 Close 当前分支
$ hg checkout feature
$ hg commit -m 'xxx' --close-branch
$ hg push

# 切回 default 分支,然后 Merge feature 分支
$ hg checkout default
$ hg merge feature
$ hg commit -m 'Merge xxx'
$ hg push

我们知道,在 Git 里可以通过 git branch -d git push origin --delete 等方式删除本地分支或远程分支。但 Mercurial 里没有删除分支的概念

已 Git 为例,在团队协作中,一个仓库应该至少有 Master BranchDevelop Branch 分支(称为主干分支),另外还应该有 Feature branchesRelease branchesHotfix branches 等常见分支(称为辅助分支)。当辅助分支完成使命后,它们将会被合并到主干分支,然后进行删除。

在 Git 中,有多种方式可以删除分支,那么 Mercurial 里则用「Close」的概率来表示一个分支的结束。如果一个分支该结束了,我们可以提交一个空的 Commit 来关闭它,比如 hg commit -m 'xxx' --close-branch。重点就是 --close-branch 参数。

代码提交

# 普通提交
$ hg commit -m "some message..."

# 空 commit 提交
$ hg commit -m "some message..." --config ui.allowemptycommit=1

刚创建的分支,是可以直接 hg commit -m "xxx" 提交一个空 Commit 的。但是在已有 Commit Log 的分支中,如果没有文件的改动,直接提交空 Commit 是会失败并提示:nothing changed 的。针对有需要提交空 Commit 的场景,可以在命令末尾加上 --config ui.allowemptycommit=1,这种场景是极少的,因此不应将 allowemptycommit 配置到 .hgrc 里面。。

代码推送

# 切换至某分支
$ hg checkout 

# 推送当前分支至远程仓库。若远程仓库中没有的新分支,则需要加上 --new-branch 参数。
$ hg push

代码拉取与更新

# 拉取代码(类似 git fetch)
$ hg pull

# 拉取代码后,更新本地分支
$ hg update

# 以上等价于
$ hg pull -u

查看提交记录

$ hg log
$ hg log -G # or hg log --graph

更多请看这里。

其他

  • hg status shows the status of a repository.
  • hg add puts files in the staging area.
  • hg commit saves the staged content as a new commit in the local repository.
  • hg log lists all changes committed to a repository, starting with the most recent.

参考文章

  • Mercurial SCM
  • Mercurial(Hg) 中文网
  • How to correctly close a feature branch in Mercurial?

你可能感兴趣的:(Mercurial 使用记录)