SlideShare a Scribd company logo
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

eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動Kohei Tokunaga
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPGregor Schmidt
 
Introduction to hazelcast
Introduction to hazelcastIntroduction to hazelcast
Introduction to hazelcastEmin Demirci
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Platform - Japan
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理KageShiron
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用Koichi HARUNA
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介Wen Liao
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub維佋 唐
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CIColCh
 
git, repo, Gerrit 基礎教學
git, repo, Gerrit 基礎教學git, repo, Gerrit 基礎教學
git, repo, Gerrit 基礎教學Doremi Lin
 
91APP 之API 經濟學與API Gateway與導入之旅
91APP 之API 經濟學與API Gateway與導入之旅91APP 之API 經濟學與API Gateway與導入之旅
91APP 之API 經濟學與API Gateway與導入之旅Amazon Web Services
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Bo-Yi Wu
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側do_aki
 

What's hot (20)

eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動eStargzイメージとlazy pullingによる高速なコンテナ起動
eStargzイメージとlazy pullingによる高速なコンテナ起動
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
The Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEPThe Microkernel Mach Under NeXTSTEP
The Microkernel Mach Under NeXTSTEP
 
Introduction to hazelcast
Introduction to hazelcastIntroduction to hazelcast
Introduction to hazelcast
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
 
Git Tutorial 教學
Git Tutorial 教學Git Tutorial 教學
Git Tutorial 教學
 
kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用kubernetes(GKE)環境におけるdatadog利用
kubernetes(GKE)環境におけるdatadog利用
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
git, repo, Gerrit 基礎教學
git, repo, Gerrit 基礎教學git, repo, Gerrit 基礎教學
git, repo, Gerrit 基礎教學
 
91APP 之API 經濟學與API Gateway與導入之旅
91APP 之API 經濟學與API Gateway與導入之旅91APP 之API 經濟學與API Gateway與導入之旅
91APP 之API 經濟學與API Gateway與導入之旅
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 

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
 
工程師必備第一工具 - Git
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - GitAlan Tsai
 

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
工程師必備第一工具 - Git工程師必備第一工具 - Git
工程師必備第一工具 - Git
 

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 (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)Pu Shiming
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbenchtblanlan
 
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 (2nd edition)
Gitlab - the new workbench (2nd edition)Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
 
GitLab—the new workbench
GitLab—the new workbenchGitLab—the new workbench
GitLab—the new workbench
 
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簡介與教學