更新和拉动有什么区别?

emu*_*rad 34 version-control mercurial

有人可以澄清更新拉取命令之间的确切区别吗?

谢谢.

pyf*_*unc 50

hg update:http://www.selenic.com/mercurial/hg.1.html#update

  • 将存储库的工作目录("工作副本")更新到存储库的指定版本

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

  • 允许您从远程存储库进行更改

因此,当您执行hg pull时,您将对存储库中的更改进行更改.hg.它不会反映在您的工作目录中.

之后,当您执行a时hg update,更改将被带到您的工作副本.

Your repo                                 Remote Repo
 \                                        \
  |                hg pull                 |
  |-.hg  <-------------------------------- |-.hg
  |   |  --------------------------------> |
  |  hg update       hg push               |
  |   |                                    |
  |- working folder                        |- working folder
Run Code Online (Sandbox Code Playgroud)

这是来自版本控制系统等颠覆的非常常见的混淆.

在subversion中:svn update将更改从中央存储服务器带到您的工作副本

但在DVCS中,您既有本地存储库又有工作副本.因此更新完全相同,但将更改从本地存储库转移到本地工作副本.


idb*_*rii 17

Mercurial是一个分布式版本控制系统,因此您拥有整个仓库历史记录以及代码版本(称为"工作副本").

pull 为您的本地仓库带来远程更改.

update 更改您的工作副本以匹配您本地仓库中的最新版本.

因此,如果克隆远程分支并继续运行更新,则代码将不会更改,因为您永远不会下载远程代码.如果你继续运行pull,那么你的代码就不会改变,因为你从不使用远程代码(将它应用到你工作的代码版本).


小智 6

pull命令从父存储库中提取更改,但实际上并未对存储库中的文件进行任何更改.

Update命令用于实际更新存储库中的文件.

参考:https: //developer.mozilla.org/en-US/docs/Mercurial_FAQ#What%27s_the_difference_between_hg_pull_and_hg_update.3F


小智 5

此链接中的这张图片可以帮助理解它:

Mercurial 是如何做到的