Mercurial 使用记录

发布于 2023-05-05 22:21:08 字数 4078 浏览 82 评论 0

配图源自 Freepik

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

安装 Mercurial

$ brew install mercurial

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

[ui]
username = frankie <frankie@example.com>

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

初始化/克隆仓库

# 初始化
$ hg init

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

创建分支

# 创建新分支
$ hg branch <branch-name>

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

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

查看/切换分支

# 查看当前分支
$ hg branch

# 查看所有分支
$ hg branches

# 切换分支
$ hg checkout <branch_name>

在 Git 中,我们可以使用 git stash 将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。Mercurial 也有类似的命令:

$ hg shelve --name <name>
$ hg unshelve <name>

其中 --name 参数是可选的,也可简写为 -n

合并分支、关闭分支

假设有 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 <branch-name>git push origin --delete <branch-name> 等方式删除本地分支或远程分支。但 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 <branch-name>

# 推送当前分支至远程仓库。若远程仓库中没有的新分支,则需要加上 --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.

参考文章

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

凑诗

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

eins

文章 0 评论 0

世界等同你

文章 0 评论 0

毒初莱肆砂笔

文章 0 评论 0

初雪

文章 0 评论 0

miao

文章 0 评论 0

qq_zQQHIW

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文