版本管理 Hg Mercurial 使用小結

背景

因爲最近公司即將從Mercurial版本管理遷移到GitLab上,特此寫下此文記念一下。git

什麼是 Hg Mercurial

Mercurial在IT界是跨平臺的分佈式版本控制軟件,主要由Python語言實現。主要是命令行程序操做,圖像化呢也有。因爲該軟件命名中文翻譯是——水銀,爲了輸入命令時方便,用元素命名Hg來做爲調用程序的關鍵字。shell

目前網絡上提供託管服務的有bucket網絡

wiki

做者我呢,用過svn,git,最後才接觸hg,用來的感受吧。命令像git,但沒git那麼複雜,說他像svn呢,感受這軟件比較年輕。ssh

基本操做

## 幫助
$ hg help

## 初始化:
$ hg init

## 查看狀態,會展現對改動了哪些被跟蹤文件,新增未跟蹤文件,衝突文件
$ hg status

## 查看遠程倉庫地址
$ hg paths

## 查看當前分支
$ hg branch

## 查看日誌
$ hg log

內容管理

## 從遠程倉庫克隆到本地
$ hg clone ssh://code@code.example.com/repository

## 新增文件
$ hg add "file-name"

## 在作了更改後
$ hg commit -m 'change description...'

## 推送該分支的更改到遠程倉庫
$ hg push -r "version_number"

## 從遠程倉庫拉取
$ hg pull

## 將拉到本地遠程倉庫的內容和本地倉庫合併
$ hg fetch

## 撤銷對當前文件的修改
$ hg revert "file-name"

## 撤銷上一次提交,並將上一次提交的內容,放入待提交區
$ hg rollback
特別說明一下 hg rollback只能回滾一次。意思是:若是你提交了兩次,運行rollback兩次,也只能回滾最近的那一次。

分支管理

## 建立分支
$ hg branch "new_branch_name"

## 切換到該分支
$ hg update "branch_name"

## 將這個分支合併到當前分支上
$ hg merge "other_branch_name"

## 推送該分支的改動到遠程倉庫
$ hg push -b "branch_name"
這分支操做,SVN的感受

草稿

hg草稿管理分佈式

## 將當前的被跟蹤的改動存到草稿,並命名
$ hg shelve --name "draft_name"

## 展現當前項目的草稿
$ hg shelve --list

## 將這個保存在草稿內的改動應用到當前項目
$ hg unshelve "draft_name"
類比 git stash, 使用該功能須要開啓拓展 shelve

對比

## 查看當前對跟蹤文件的改動
$ hg diff

## 查看當前版本對於"version_number" 版本的不一樣
$ hg diff -r "version_number"

## 查看ver2相對於ver1的改動
$ hg diff -r "ver1" -r "ver2"

拈來

## 將該版本的提交記錄直接複製過來, 命令成功後,會在當前分支生成一個提交記錄!
$ hg graft -r "rev"
就是 git cherry-pick

補丁 導入

## 將當前已跟蹤文件的更改導入 ./code.patch 文件內
$ hg diff > code.patch
## 將文件內改動應用到當前項目
$ hg import code.patch --no-commit
你可把這個功能當保存草稿用,也能離線推送編輯給別人

其餘

hg日誌查看svn

## 查看最新版本
$ hg tip

## 查看日誌,並附上分支圖
$ hg log -G

## 查看此次提交的日誌
$ hg log -r "version_number"
hg 使用了自增天然數,和hash字符共同管理版本號,集svn,git版本號於一身,這下你挑不出毛病了吧
## 查看上一個版本提交日誌
$ hg parent

配置

全局配置文件放在~/.hgrc,當前項目的配置文件放在./.hg/隱藏目錄內。遠程倉庫的路徑記錄在./.hg/hgrc內。工具

提交用戶

配置提交時署名fetch

## file ~/.hgrc
[ui]
username = zhang3 <zhang3@example.com>

拓展管理

hg的拓展管理使用ini格式文件管理,內部拓展只須要寫上拓展名就像開關同樣,使用第三方拓展須要指明拓展文件路徑。ui

[extensions]
shelve =
strip =
my_ext = ~/my_ext.py

常見問題

  1. sparse-revlog 相關的報錯

這個是各個hg版本兼容性問題。spa

  1. 改了配置文件,沒生效

若是你在使用SourceTree, TortoiseHg等這樣的可視化版本管理工具,通常會自帶一個hg軟件,要注意改動路徑。

相關文章
相關標籤/搜索