2010-12-09 29 views
27

有人可以澄清更新命令之間的確切區別是什麼?更新和拉是什麼區別?

謝謝。

+10

如果這讓人困惑,你可能需要閱讀[Mercurial教程](http://hginit.com) – 2010-12-09 02:36:16

回答

42

汞柱更新:http://www.selenic.com/mercurial/hg.1.html#update

  • 更新版本庫的工作目錄(以下簡稱 「工作副本」)到庫的指定版本

汞柱拉:http://www.selenic.com/mercurial/hg.1.html#pull

  • 允許您從遠程存儲庫中帶來更改

因此,當您執行hg pull時,會將您的存儲庫更改置於.hg之下。它不會反映在你的工作目錄中。

之後,當您執行hg update時,所做的更改將傳送到您的工作副本。

Your repo         Remote Repo 
\          \ 
    |    hg pull     | 
    |-.hg <-------------------------------- |-.hg 
    | | --------------------------------> | 
    | hg update  hg push    | 
    | |         | 
    |- working folder      |- working folder 

這是從版本控制系統顛覆來的時候非常混亂。

在顛覆:SVN更新帶來從中央回購服務器更改到你的工作副本

但在DVCSs,你有兩個本地資源庫和工作副本。因此,更新完全相同,但將更改從本地回購協議拖到本地工作副本。

15

Mercurial是一個分佈式版本控制系統,讓你擁有整個回購歷史,以及你的代碼版本(稱爲「工作副本」)。

pull對您當地的回購引入了遠程更改。

update更改您的工作副本以匹配您當地回購中的最新版本。

所以,如果你克隆一個遠程分支,並繼續運行更新,你的代碼不會改變,因爲你永遠不會下載遠程代碼。如果你繼續運行拉,那麼你的代碼不會改變,因爲你永遠不會使用遠程代碼(將它應用到你的工作版本的代碼)。

相關問題