我正在和一个朋友一起做一个项目,我想返回到我们代码的旧版本,并将其设置为当前版本。我该怎么做?
我在vs08上使用“anksvn”。
我的电脑上有我想要的版本,但提交失败;我得到的信息是 "提交失败,文件或目录已过期。"
我的电脑上也有subversion客户端。
我正在和一个朋友一起做一个项目,我想返回到我们代码的旧版本,并将其设置为当前版本。我该怎么做?
我在vs08上使用“anksvn”。
我的电脑上有我想要的版本,但提交失败;我得到的信息是 "提交失败,文件或目录已过期。"
我的电脑上也有subversion客户端。
当前回答
使用merge来撤销整个签入的标准方法非常有效,如果这是您想要做的。不过,有时您所要做的只是还原单个文件。没有合法的方法来做到这一点,但有一个hack:
使用svn log查找需要的版本。 使用svn的export子命令: SVN export http://url-to-your-file@123 /tmp/filename
(其中123是文件良好版本的修订号。)然后移动或复制该文件以覆盖旧文件。签入修改后的文件,就完成了。
其他回答
这就是我所做的,为我工作。
我想撤消在多次提交中所做的更改,并希望转到以前的提交点。
去团队->显示历史。 右键单击要忽略的修订或范围。 选择“恢复更改”选项。
这将运行反向合并,撤销工作副本中的更改。
只需检查代码并提交即可。
以前的大多数答案都是使用反向合并,这通常是正确的答案。然而,有一种情况(刚刚发生在我身上)却不是这样。
我不小心将一个Unix行结束符的文件更改为DOS行结束符时做了一个小更改,并提交了它。这很容易取消,可以通过更改行结束符并再次提交,也可以通过反向合并,但它的效果是使svn blame list my edit作为文件每一行的源。(有趣的是,Windows上的TortoiseSVN不受此影响;只有命令行责备SVN。)
如果要维护svn blame上报的历史记录,我认为需要做以下工作:
删除文件并提交。 在存储库中,将文件先前的良好副本复制到头文件中,并提交。 恢复您想要保留的任何编辑。
删除有点可怕,但请记住,您始终将文件保存在存储库中,因此恢复它不是什么大问题。下面是一些演示步骤的代码。假设xxx是最后一个好的副本的修订号。
svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"
注意,对于存储库中的副本,目标需要是目录,而不是文件名。
右键单击项目>替换为>修订或URL >选择要恢复的特定修订。
现在将本地更新代码版本提交到存储库。这将把代码库恢复到特定的修订版本。
我认为这是最合适的:
是否合并向后,例如,如果提交的代码包含修订 5612到5616版本,倒着合并。对我来说很管用。
例如:
svn merge -r 5616:5612 https://<your_svn_repository>/
它将包含一个合并的代码回到以前的修订,然后您可以提交它。
同步到旧版本并提交。这应该能奏效。
这里还解释了撤消更改。