更新到修订项目与恢复到修订项目

我已经开始在 TortoiseSVN 中使用 Subversion。如果我打开日志,右键点击一个旧版本,我会看到两个选项,听起来像是回滚到旧版本: “更新项目到修订版”和“恢复到此修订版”。

我理解,当您只想查看旧版本而不想真正更改存储库时,就会使用对旧版本的更新。恢复是当您实际上搞砸了,并希望存储库中的最新版本与旧版本相同。

所以假设 HEAD 修正值是100,我返回到95。它会反向合并我的工作副本回到95。然后我就可以把这个修改提交到存储库中,这样就可以正确地创建修订版101了吗?如果我更新回修订本95,这有什么不同吗?它不是还在逆转上次修订版的变化吗?对于恢复或更新到旧版本后工作副本的状态如何不同,我感到困惑。

106625 次浏览

将工作副本更新到选定的修订版。如果您希望您的工作副本反映过去的一段时间,或者如果有进一步的提交到存储库,并且您希望一步一步地更新您的工作副本,那么这种方法非常有用。最好更新工作副本中的整个目录,而不仅仅是一个文件,否则工作副本可能不一致。这是用来测试一个特定的转速目的,如果您的测试已经完成,您可以使用这个命令来测试另一个转速,或者使用 < strong > SVN Update 来获取 HEAD

如果要永久撤消早先的更改,请使用 恢复此修订版

来自 TSVN 的帮助医生

如果您更新您的工作副本到一个更早的转速,这只会影响您自己的工作副本,在您做了一些更改,并希望提交,您将失败,TSVN 会提醒您更新您的 WC 到最新的修订第一 如果您恢复到一个牧师,您可以提交到存储库。每个人都将返回到牧师后,他们做了一个更新。

您的工作副本中的文件在恢复之后可能完全相同,但是它们仍然是非常不同的操作——存储库处于完全不同的状态,并且在恢复到旧版本之后您将有不同的选项可用。

简而言之,“ update to”只影响您的工作副本,但是“反向合并和提交”将影响存储库。

如果您“更新”到一个旧版本,那么存储库没有改变: 在您的示例中,HEAD 版本仍然是100。您不必提交任何内容,因为您只是在处理工作副本。如果您修改您的工作副本并尝试提交,您将被告知您的工作副本已过期,并且您需要在提交之前进行更新。如果处理同一存储库的其他人执行了“更新”,或者如果您签出了第二个工作副本,那么它将是 r100。

但是,如果您“反向合并”到一个旧版本,那么您的工作副本仍然基于 HEAD (假设您是最新的)——但是您正在创建一个新版本以取代不需要的更改。您必须提交这些更改,因为您正在更改存储库。一旦完成,任何基于 HEAD 的更新或新的工作副本将显示 r101,其中包含您刚才提交的内容。

更新到修订 将只更新您的工作副本的文件到您选择的修订。 但是你的 不能再继续了工作在这个修订,因为 SVN 会抱怨你的工作副本是 过时了

恢复到此修订 将撤消在所选修订之后对工作副本所做的所有更改(在示例 rev.96,97,98,99,100中) 您的工作副本现在在 修正状态

两种情况下的文件内容是相同的,但是在第一种情况下,你有一个 未经修改的工作副本,你不能提交你的变更(因为你的工作副本没有指向 HEAD 转速100)在第二种情况下,你有一个 修改过的工作副本指向头,你可以继续工作和提交

为了理解在这两种情况下工作副本的状态是如何不同的,您必须理解 基地修订的概念:

基地

工作副本中某项的修订号。如果该项已为 局部修改,这是指 物品没有这些的样子 局部改装。

工作副本包含每个文件的快照(隐藏在。Svn 文件夹) ,意思是 就像上次从存储库中检索到的那样。这解释了为什么工作副本占用2倍的空间,以及如何在没有网络连接的情况下检查甚至恢复本地修改。

更新项目到修订 更改此基础修订,使基础过时。当您尝试提交本地修改时,SVN 将注意到您的 BASE 与存储库 HEAD 不匹配。提交将被拒绝,直到您执行更新(可能还包括合并)来修复此问题。

恢复到修订 并不改变 BASE。它在概念上几乎与手动编辑文件以匹配以前的修订版本相同。

《乌龟》中的文字:

更新修订项目 将工作副本更新到选定的修订版。如果您希望您的工作副本反映过去的一段时间,或者如果有进一步的提交到存储库,并且您希望一步一步地更新您的工作副本,那么这种方法非常有用。最好更新工作副本中的整个目录,而不仅仅是一个文件,否则工作副本可能不一致。

如果要永久撤消早期更改,请改为使用此修订的“恢复”。

恢复此修订版 恢复到以前的修订版。如果您已经做了一些更改,然后决定您真的想要回到修订 N 中的情况,那么这就是您需要的命令。更改将在工作副本中撤消,因此在提交更改之前,此操作不会影响存储库。注意,这将撤消所选修订之后所做的所有更改,用早期版本替换文件/文件夹。

如果工作副本处于未修改状态,则在执行此操作之后,工作副本将显示为已修改。如果已经有本地更改,此命令将把撤消更改合并到工作副本中。

内部发生的情况是,Subversion 对所选修订之后所做的所有更改执行反向合并,从而消除了之前提交的影响。

如果在执行这个操作之后,你决定撤消撤消操作,并将工作副本恢复到之前的未修改状态,那么你应该在文件资源管理器中使用 TortoiseSVN → overt,这将放弃这个反向合并操作所做的本地修改。

如果您只是想看看早期版本中的文件或文件夹是什么样子,请使用“更新到修订版”或“保存修订版为...”。

@ BaltoStar 更新修订语法:

Http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.update.html

svn update -r30

其中30是修订号。希望这个帮助!