SlideShare a Scribd company logo
1 of 47
Mercurial教學
先進的分散式版本控制系統
Mercurial 下載與安裝
• Mercurial官網:
  – http://mercurial.selenic.com/
• TortoiseHg
  – http://tortoisehg.bitbucket.org/
• 下載網址:
  – http://lab.ez2learn.com:5566/mercurial-1.6.4.msi
  – http://lab.ez2learn.com:5566/tortoisehg-1.1.4-hg-
    1.6.4-x86.msi
什麼是版本控制系統?
• 記錄開發中的檔案變化和記錄
• 共同開發用的檔案庫
常見的檔案管理方式
• 管它去死直接修改法
• 多重影分身法
• FTP共同管理法
管它去死直接修改法
• 直接在原資料夾修改檔案內容




     修改          修改



          Time
面臨問題
• 我這次到底改了什麼?
• 我這次如果改錯了什麼怎麼辦?
• 如果這次改壞掉,明天又要demo給老闆
  看,怎麼辦?
多重影分身法
• 每改一定次數就Copy一個資料夾




        Copy & 修改
                                Copy & 修改



 我的專案               我的專案 – 複製               我的專案 – 複製 (1)

                       Time
面臨問題
• 這份複製到底是從哪份Copy而來的?
• 這份Copy到底改了些什麼?
• Copy每一次都是重覆的內容,很佔硬碟空
  間
FTP共同開發法
• 用FTP來存放共同開發的檔案


              FTP 檔案庫




 張三 資料夾    王五 資料夾       李四 資料夾   阿貓 資料夾
面臨問題
• 別人到底改了什麼?
• 我改的東西會不會跟別人也正在改?
• 到底是哪個畜牲把程式改爛掉害我demo時
  當機被老闆電?
共同協作問題



         檔案A
               FTP 檔案庫




 檔案A*
 檔案A       檔案A**
           檔案A
張三 資料夾   王五 資料夾          李四 資料夾   阿貓 資料夾
Mercurial版本控制系統
•   解決上列的所有問題
•   分散式的版本控制系統
•   簡單好學易用
•   功能強大
•   以Python實作 – 容易擴充
•   有免費的線上檔案庫可以使用
    – Bitbucket.org
建立HG檔案庫
• 用GUI照右圖按
• 或著打指令
 – cd path/to/create
 – hg init
等等… 為什麼是hg?
新增追蹤檔案
• 用GUI照右圖按
• 或輸入指令
 – hg add hello.py
藍色十字
• 表示已新增將追蹤的,但是尚未實際送出
  commit
送出commit
• 在資料夾空白處點右鍵
• 選擇HG commit
• 或輸入指令
 – hg commit –m “修改註記”
輸入註記



     這次改變的註記




更動檔案的列表        檔案變動的細節
綠勾勾
• 綠勾勾表示檔案已追蹤,且未修改
進行改版
紅色驚嘆號
• 表示自從上次commit已經有更動
再次送出commit
diff檔的說明
•   Mercurial只記住差別的部份
•   ---表示先前被改的檔案
•   +++表示這次改的檔案
•   @@ 說明哪下列是哪些行被更動
•   -表示被刪除
•   +表示被新增
•   其它表示沒有修改
一個實際的例子

被刪掉的行




新增的行




未改動的行
瀏覽檔案庫
• 在資料夾空白處按右鍵
• 選擇
 – HG Repository Explorer
• 或著打指令
 – hg log
檔案庫瀏覽器


第二次改的記錄點



第一次改的記錄點
           版號      這次做了什麼?   哪個畜牲改的?   多久前?




           更動的檔案
           M是指修改
           A是指新增
           R是指移除
                             詳細修改的內容
多改版幾次
出現問題了!!
• 明天要demo給老闆看,結果有個腦殘亂改
首先看改了什麼


        點兩下




點兩下
這畜牲改了什麼一清二楚
回到以前正常的版本
• 選要回朔的版本按右鍵
• 然後選Update
回朔!
那共同協作呢?
• Bitbucket.org
  – 免費的線上Mercurial檔案庫
  – 原本私人檔案庫要收費,自從被另一家公司收
    購現在已經可以免費建立無限個私人檔案庫
申請帳號或是以OpenID登入
建立檔案庫
填好表單後建立
完整的檔案庫控制頁面
檔案庫設定
同步設定
新增遠端檔案庫
設定為預設遠端檔案庫
開啟同步視窗
看看有什麼是遠端沒有的
送出
回到Bitbucket.org
遺珠之憾
•   還有很多好用的功能
•   Branch – 版本分支
•   Merge – 合併分支
•   其它的版本控制系統: Git, SVN, CSV…

• 推薦的教學
    – Joe’s Hg Init Tutorial
    – http://hginit.com/
Any question?

More Related Content

What's hot

工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - GitAlan Tsai
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門Kota Mizushima
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理H2O Space. Co., Ltd.
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013DQNEO
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Hidehisa Matsutani
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
ソフトウェア構成管理入門
ソフトウェア構成管理入門ソフトウェア構成管理入門
ソフトウェア構成管理入門智治 長沢
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理torisoup
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろうakira6592
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-akira6592
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine PluginMei Nakamura
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學littlebtc
 
初心者 Git 上手攻略
初心者 Git 上手攻略初心者 Git 上手攻略
初心者 Git 上手攻略Lucien Lee
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装Takuya ASADA
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 

What's hot (20)

工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - Git
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
Javaバイトコード入門
Javaバイトコード入門Javaバイトコード入門
Javaバイトコード入門
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
 
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
ソフトウェア構成管理入門
ソフトウェア構成管理入門ソフトウェア構成管理入門
ソフトウェア構成管理入門
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學
 
初心者 Git 上手攻略
初心者 Git 上手攻略初心者 Git 上手攻略
初心者 Git 上手攻略
 
UIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろうUIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろう
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 

Viewers also liked

How to Use Tortoisehg
How to Use TortoisehgHow to Use Tortoisehg
How to Use TortoisehgVeronica Lin
 
Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學Duncan Chen
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to gitBo-Yi Wu
 

Viewers also liked (6)

Mercurial 簡介
Mercurial 簡介Mercurial 簡介
Mercurial 簡介
 
How to Use Tortoisehg
How to Use TortoisehgHow to Use Tortoisehg
How to Use Tortoisehg
 
Git與source tree 基礎教學
Git與source tree 基礎教學Git與source tree 基礎教學
Git與source tree 基礎教學
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Git Tutorial 教學
Git Tutorial 教學Git Tutorial 教學
Git Tutorial 教學
 
軟體架構模式
軟體架構模式軟體架構模式
軟體架構模式
 

Similar to Mercurial簡介與教學

Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuanWei-Yuan Chang
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Wen-Tien Chang
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门Rongxing Liu
 
GDGK (LT) - Git 工作流程
GDGK (LT) - Git 工作流程GDGK (LT) - Git 工作流程
GDGK (LT) - Git 工作流程Chia Wei Tsai
 
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关jay li
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbenchtblanlan
 
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Pu Shiming
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍medcl
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?Andy Dai
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Shengyou Fan
 
hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud PaaS 雲創平台 PHP 運行環境介紹hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud PaaS 雲創平台 PHP 運行環境介紹hicloud-paas
 
做自己的可可豆夾 @ cocoahead.tw
做自己的可可豆夾 @ cocoahead.tw做自己的可可豆夾 @ cocoahead.tw
做自己的可可豆夾 @ cocoahead.twKai-Yuan Cheng
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github TutorialTing Wen Su
 
Git & git flow
Git & git flowGit & git flow
Git & git flowAmo Wu
 
出了问题不要靠猜
出了问题不要靠猜出了问题不要靠猜
出了问题不要靠猜LI Daobing
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer TalkLarry Cai
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置Shengyou Fan
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 

Similar to Mercurial簡介與教學 (20)

Gitlab
GitlabGitlab
Gitlab
 
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuan
 
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
 
Github简介及实用入门
Github简介及实用入门Github简介及实用入门
Github简介及实用入门
 
GDGK (LT) - Git 工作流程
GDGK (LT) - Git 工作流程GDGK (LT) - Git 工作流程
GDGK (LT) - Git 工作流程
 
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbench
 
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
 
Git 使用介绍
Git 使用介绍Git 使用介绍
Git 使用介绍
 
該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?該怎麼樣(認真的)部署你的 Python Web 應用程式?
該怎麼樣(認真的)部署你的 Python Web 應用程式?
 
Github簡介
Github簡介Github簡介
Github簡介
 
Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南Visual Studio Code 快速上手指南
Visual Studio Code 快速上手指南
 
hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud PaaS 雲創平台 PHP 運行環境介紹hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud PaaS 雲創平台 PHP 運行環境介紹
 
做自己的可可豆夾 @ cocoahead.tw
做自己的可可豆夾 @ cocoahead.tw做自己的可可豆夾 @ cocoahead.tw
做自己的可可豆夾 @ cocoahead.tw
 
Git&Github Tutorial
Git&Github TutorialGit&Github Tutorial
Git&Github Tutorial
 
Git & git flow
Git & git flowGit & git flow
Git & git flow
 
出了问题不要靠猜
出了问题不要靠猜出了问题不要靠猜
出了问题不要靠猜
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 

Mercurial簡介與教學