Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 什么';更新和拉取的区别是什么?_Version Control_Mercurial - Fatal编程技术网

Version control 什么';更新和拉取的区别是什么?

Version control 什么';更新和拉取的区别是什么?,version-control,mercurial,Version Control,Mercurial,有人能澄清一下update和pull命令之间的确切区别吗 谢谢。hg更新: 将存储库的工作目录(“工作副本”)更新为存储库的指定版本 汞拉力: 允许您从远程存储库带来更改 因此,当您执行hg pull时,您会将更改带到.hg下的存储库中。它不会反映在您的工作目录中 之后,当您执行hg更新时,更改将被带到您的工作副本中 Your repo Remote Repo \

有人能澄清一下update和pull命令之间的确切区别吗

谢谢。

hg更新:

  • 将存储库的工作目录(“工作副本”)更新为存储库的指定版本
汞拉力:

  • 允许您从远程存储库带来更改
因此,当您执行hg pull时,您会将更改带到
.hg
下的存储库中。它不会反映在您的工作目录中

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

Your repo                                 Remote Repo
 \                                        \
  |                hg pull                 |
  |-.hg  <-------------------------------- |-.hg
  |   |  --------------------------------> |
  |  hg update       hg push               |
  |   |                                    |
  |- working folder                        |- working folder
您的回购远程回购
\                                        \
|汞拉力|
|-.hg|
|hg更新hg推送|
|   |                                    |
|-工作文件夹|-工作文件夹
当来自类似于颠覆的版本控制系统时,这是非常常见的混淆

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


但在DVCSs中,您同时拥有本地存储库和工作副本。因此,update的操作与此完全相同,但会将更改从本地repo提取到本地工作副本。

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

Your repo                                 Remote Repo
 \                                        \
  |                hg pull                 |
  |-.hg  <-------------------------------- |-.hg
  |   |  --------------------------------> |
  |  hg update       hg push               |
  |   |                                    |
  |- working folder                        |- working folder
Update命令用于实际更新存储库中的文件

参考:

Mercurial是一个分布式版本控制系统,因此您拥有整个回购历史以及代码版本(称为“工作副本”)

pull
为本地回购带来远程更改

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

因此,如果您克隆远程分支并继续运行更新,您的代码将不会更改,因为您永远不会下载远程代码。如果您继续运行pull,那么您的代码将不会更改,因为您从未使用远程代码(将其应用于代码的工作版本)。

此图片有助于理解它:


如果这让人困惑,您可能需要阅读一篇文章。fetch扩展也值得一看,因为它将pull、merge和commit(如有必要)以及update组合到一个命令中。在提供的图片中添加一些文本上下文有助于更好地理解您的答案。不过,我没有被否决