首页 文章

Subversion - SVN checkout和SVN更新命令有什么区别?

提问于
浏览
41

据我所知,“SVN checkout”命令将从Subversion存储库执行文件的初始获取,并将它们本地存入您的工作目录/副本,并且“SVN update”命令将从以下文件中获取文件的更改如果其他人做出更改,则存储库 .

在我看来,虽然“更新”只是“结账”的一个特例,也就是说,当结账发生时,它获取所有文件,因为当地没有任何文件,因此所有文件都“已更改”,并且在幕后这些命令大致相同的事情 . 我假设命令单独存在只是作为一种简化手段?

或者,命令之间是否存在其他差异,例如,“SVN更新”获取文件是否获取新文件(存储库中存在的工作副本中没有的文件)或仅更新现有文件?

6 回答

  • 10

    正如我所看到的,最大的区别在于 checkout creates 是一个工作副本,而 update 会对 existing 工作副本进行更改 .

  • 43

    svn checkout 从给定版本(默认HEAD)的存储库中的给定目录复制所有版本化文件,并将它们复制到本地计算机 . 它还会生成所有隐藏的.svn目录及其中的元数据,这些目录使这些文件成为工作副本 .

    svn export 从给定版本的存储库中的给定目录复制所有版本化文件(默认HEAD),并将它们复制到本地计算机,但生成标准目录层次结构 . (它不会生成可以更新或重新检入的工作副本) .

    svn update 将更改应用于现有工作副本 . 如果发生冲突,则会发现用户已收到警报,并且必须先解决此问题,然后才能提交任何更改 . 使用 svn commit 时,要求提交的工作副本是最新的(即与HEAD相同的修订版) .

  • 3

    Update会将已签出的版本更新为存储库中的最新版本(或指定的其他版本) . 如果您对工作副本进行了更改,则更新后它们仍将存在 . 如果已将文件添加或删除到存储库,则会将这些文件反映在工作副本中 . 如果您的本地副本和存储库中都有更改,SVN将尝试合并您的所有更改,如果这不起作用,它将标记您手动解决的冲突 .

  • 2

    Subversion使用隐藏的元数据目录来启用它提供的功能 . 这些.svn目录是使目录成为Subversion工作副本的原因 - 没有这些目录,它只是一个目录而且Subversion对它没有多大作用 .

    UPDATE是一个在Subversion工作副本上执行的操作;没有.svn目录,没有更新 . CHECKOUT是创建工作副本的操作 .

  • 13

    svn update 仅带来从用户版本到最新可用版本的文件差异 . 如果没有差别没有行动 .

    但checkout创建一个新文件夹并带来该分支的所有文件 . 如果我们不断改变我们工作的分支机构,结账是一种很好的工作方式 . 更新是指我们有一个主干,需要在该主干上完成其他人的更新 .

  • 2

    在使用SVN期间,checkout和update之间的显着区别在于:您只能使用 checkout 命令 to build up the relation between a local directory and the repository (under version control) 并将所有文件从根存储库复制到本地工作目录 . 之后,使用 checkout 更新本地目录中的副本将产生如下错误:

    svn:E175002: Unable to connect to a repository ,网址为'https://********' .

    svn:E175002: The OPTIONS request returned invalid XML 在回复中:**** . “

    更新 local directory 中当前版本的唯一方法是使用 svn update 命令 .

相关问题