据我所知,“SVN checkout”命令将从Subversion存储库执行文件的初始获取,并将它们本地存入您的工作目录/副本,并且“SVN update”命令将获得对文件的更改( s)如果其他人做出了更改,则从存储库中获取。
在我看来,虽然“更新”只是“结帐”的一个特例,也就是说,当结帐发生时,它会获取所有文件,因为它们都不存在于本地,因此所有文件都已“更改” “而且幕后这些命令在很大程度上都是一样的。我假设这些命令是单独存在的,只是作为一种简化手段?
或者,命令之间是否存在其他差异,例如,“SVN更新”获取文件是否获取新文件(存储库中存在的工作副本中没有的文件)或仅更新现有文件?
答案 0 :(得分:43)
正如我所看到的,最大的区别在于checkout
创建工作副本,而update
则会对现有工作进行更改副本。
答案 1 :(得分:13)
svn checkout
从给定版本(默认HEAD)的存储库中的给定目录复制所有版本化文件,并将它们复制到本地计算机。它还会生成所有隐藏的.svn目录及其中的元数据,使这些文件成为工作副本。
svn export
从给定版本的存储库中的给定目录复制所有版本化文件(默认HEAD),并将它们复制到本地计算机,但会生成标准目录层次结构。 (它不生成可以更新或重新检入的工作副本。)
svn update
将更改应用于现有工作副本。如果发生冲突,则会发现用户已收到警报,并且必须先解决此问题,然后才能提交任何更改。使用svn commit
时,要求提交的工作副本是最新的(即与HEAD相同的修订版)。
答案 2 :(得分:10)
更新会将已签出的版本更新为存储库中的最新版本(或指定的其他版本)。如果您对工作副本进行了更改,则更新后它们仍将存在。如果已将文件添加或删除到存储库,则会将这些文件反映在工作副本中。如果您的本地副本和存储库中都有更改,SVN将尝试合并您的所有更改,如果这不起作用,它将标记您手动解决的冲突。
答案 3 :(得分:3)
Subversion使用隐藏的元数据目录来启用它提供的功能。这些.svn目录是使目录成为Subversion工作副本的原因 - 没有这些目录,它只是一个目录而且Subversion对它没有太大帮助。
UPDATE是一个在Subversion工作副本上执行的操作;没有.svn目录,没有更新。 CHECKOUT是创建工作副本的操作。
答案 4 :(得分:2)
svn update
只会带来从用户版本到最新可用版本的文件差异。如果没有差别没有行动。
但checkout会创建一个新文件夹并带来该分支的所有文件。如果我们不断改变我们工作的分支机构,结账是一种很好的工作方式。更新是指我们有一个主干,需要在该主干上完成其他人的更新。
答案 5 :(得分:2)
在使用SVN期间,结帐和更新之间的显着区别在于:您只能使用结帐命令一次来建立本地目录和存储库之间的关系(在版本控制)并将所有文件从根存储库复制到本地工作目录。之后,使用 checkout 更新本地目录中的副本将产生如下错误:
svn:E175002:无法连接到存储库,网址为“https:// ********”。
svn:E175002: OPTIONS请求在响应中返回了无效的XML :****。“
更新本地目录中当前版本的唯一方法是使用 svn update 命令。