您的位置:首页 > 其它

svn 之"回到以前的版本"

2016-06-03 13:46 351 查看
  这里讲的包括两个部分的revert方法:1.本地的work copy 2.远程的svn仓库repository

  最近在网络上查询关于svn 服务器的repository版本回退问题,今天在网上发现了不错的解决方法,特此把它记录起来

1.本地work copy的版本回退:

 由于Subversion会记录你对Repository的每一次修改,

 因此能够很容易的获得Repository以前某一时刻的状态。

 比如:现在Repository的最新Revision是56,

 这时我想看看Repository在Revision24时的状态,

 可以在本地的Working Copy中单击右键,

 TortoiseSVN->Update to Revision...,

 然后输入你想要回复到的Revision号,点OK按钮。

2.svn服务器的repository版本回退:

回到以前的版本还有一种情况是我想将Repository的

 最新Revision的状态与以前某一个Revision的状态一模一样,

 上面那种方法就不适合,

 上面的那种方法只是将本地的Working Copy回复到以前的状态,

 而服务器端的Repository并没有回到以前的状态。

 将Repository的最新Revison的状态回复到以前某个Revision的状态具体的方法是:

 先执行Update命令将Working Copy更新到最新的Revision,

 然后在Working Copy中单击右键,

 TortoiseSVN->Show Log,

 弹出的Log Messages窗口中会显示该Repository的所有Revision,

 选中最新的Revision,之后按住Shift键,

 再单击你想回复到的Revision+1的那个Revision

 (比如Repository的最新Revision是30,

 你想将Repository的状态回复到Revision16,

 那么就选中Revision30,再按住Shift键,

 选中Revision17,

 就是说选中Revision17到Revision30之间的所有Revision)。

 然后在选中的Revision上单击右键,

 选中“Revert changes from these revision”。

 再点Yes按钮,就可以将Working Copy的状态回复到目标Revision。

 注意,此时只是Working Copy回复到目标Revision,

 之后应该用Commit提交修改,

 这样Repository最新状态就与目标Revision的状态一样了。

总结:

这两种回复到以前版本的方式截然不同,
第一种方式是将整个Working Copy回复到某个Revision,
也就是说这种方式Working Copy中的“.svn”目录所存的文件副本也与目标Revision的一模一样,
如果这时你没有修改文件,你将不能执行Commit命令。
而第二种方式客户端Working Copy中的
“.svn”目录所存的副本始终是最新的Revision的文件副本
(这里我们基于一个假设:在Update之后没有其他人对Repository做修改)。
这种方式就像是我们自己手工将Working Copy的文件状态修改为目标Revision,
在修改之后提交修改一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: