Mercurial 使用记录
Mercurial 也是一个分布式版本控制系统,主要使用 Python 语言编写的。
其使用化学元素「汞」的元素符号「Hg」小写形式 hg
作为命令。
安装 Mercurial
$ brew install mercurial
修改配置文件 ~/.hgrc
(若无则新增),主要是修改 username
和 email 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
。
合并分支、关闭分支
假设有 default
和 feature
分支,将 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 Branch
和 Develop Branch
分支(称为主干分支),另外还应该有 Feature branches
、Release branches
、Hotfix 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论