我正在和一个朋友一起做一个项目,我想返回到我们代码的旧版本,并将其设置为当前版本。我该怎么做?
我在vs08上使用“anksvn”。
我的电脑上有我想要的版本,但提交失败;我得到的信息是 "提交失败,文件或目录已过期。"
我的电脑上也有subversion客户端。
我正在和一个朋友一起做一个项目,我想返回到我们代码的旧版本,并将其设置为当前版本。我该怎么做?
我在vs08上使用“anksvn”。
我的电脑上有我想要的版本,但提交失败;我得到的信息是 "提交失败,文件或目录已过期。"
我的电脑上也有subversion客户端。
当前回答
这就是我所做的,为我工作。
我想撤消在多次提交中所做的更改,并希望转到以前的提交点。
去团队->显示历史。 右键单击要忽略的修订或范围。 选择“恢复更改”选项。
这将运行反向合并,撤销工作副本中的更改。
只需检查代码并提交即可。
其他回答
就用这条线
svn update -r yourOldRevesion
您可以使用以下命令了解您的当前版本:
svn的信息
使用merge来撤销整个签入的标准方法非常有效,如果这是您想要做的。不过,有时您所要做的只是还原单个文件。没有合法的方法来做到这一点,但有一个hack:
使用svn log查找需要的版本。 使用svn的export子命令: SVN export http://url-to-your-file@123 /tmp/filename
(其中123是文件良好版本的修订号。)然后移动或复制该文件以覆盖旧文件。签入修改后的文件,就完成了。
这页上有很多危险的答案。请注意,从SVN版本1.6开始,执行更新-r可能会导致树冲突,这将迅速升级为可能丢失数据的kafkeresque噩梦,您需要在谷歌上搜索关于树冲突的信息。
恢复版本的正确方法是:
svn merge -r HEAD:12345 .
其中12345是版本号。别忘了这个点。
下面的方法对我很有效。
我有很多本地更改,需要在本地副本中丢弃这些更改,并在SVN中签出最后的稳定版本。
检查所有文件的状态,包括被忽略的文件。 Grep所有行以获取新添加和忽略的文件。 将这些替换为//。 rm -rf所有的直线。 SVN状态——no-ignore | grep '^[?I]' | sed "s/^[?I] //" | xargs -I{} rm -rf "{}"
我认为这是最合适的:
是否合并向后,例如,如果提交的代码包含修订 5612到5616版本,倒着合并。对我来说很管用。
例如:
svn merge -r 5616:5612 https://<your_svn_repository>/
它将包含一个合并的代码回到以前的修订,然后您可以提交它。