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