有时候我们想丢弃对代码做过的改动。
分两种情况:
一、改动没有check in。这种情况下,我们使用svn revert就能把改动给扔掉了。
提示:CVS用户习惯于只把本地改动过的文件删掉,然后执行一次update来还原文件。在svn中也可以这么做,但最佳实践是执行svn revert,这个操作会更安全也更迅速。因为update需要去连接服务器而你没有准备好接受新的改动,而svn revert不会连接服务器也不会从服务器获取新的改动。
二、改动已经check in。
这种情况下,有多种办法可以进行撤销修改。一般我们推荐用svn merge来达成目的。
典型的操作过程如下:
1、保证我们拿到的是最新代码:
svn update
假设是28版本。
2、然后找出要移除的确切版本:
svn log contacts.java
根据log怀疑是27版本改坏的,比较一下:
svn diff -r 26:27 contacts.java
发现果真是27版本坏事。
3、撤销27版本的改动:
svn merge -r 27:26 contacts.java
为了保险起见,再次确认合并的结果:
svn diff contacts.java
发现已正确撤销了改动,提交。
4、提交改动
svn commit -m "Revert wrong change from r27"
提交后版本变成了29。
关于整个目录的回滚,参阅帖子: http://www.scmbbs.com/cn/svntp/2007/12/svntp11.php
分两种情况:
一、改动没有check in。这种情况下,我们使用svn revert就能把改动给扔掉了。
提示:CVS用户习惯于只把本地改动过的文件删掉,然后执行一次update来还原文件。在svn中也可以这么做,但最佳实践是执行svn revert,这个操作会更安全也更迅速。因为update需要去连接服务器而你没有准备好接受新的改动,而svn revert不会连接服务器也不会从服务器获取新的改动。
二、改动已经check in。
这种情况下,有多种办法可以进行撤销修改。一般我们推荐用svn merge来达成目的。
典型的操作过程如下:
1、保证我们拿到的是最新代码:
svn update
假设是28版本。
2、然后找出要移除的确切版本:
svn log contacts.java
根据log怀疑是27版本改坏的,比较一下:
svn diff -r 26:27 contacts.java
发现果真是27版本坏事。
3、撤销27版本的改动:
svn merge -r 27:26 contacts.java
为了保险起见,再次确认合并的结果:
svn diff contacts.java
发现已正确撤销了改动,提交。
4、提交改动
svn commit -m "Revert wrong change from r27"
提交后版本变成了29。
关于整个目录的回滚,参阅帖子: http://www.scmbbs.com/cn/svntp/2007/12/svntp11.php
本文介绍了如何在Subversion (SVN) 中撤销未提交的本地更改及已提交的代码更改。对于未提交的更改,使用svn revert命令即可;而对于已提交的更改,则可以通过svn merge命令回滚到之前的版本。此外,还提供了详细的步骤说明和命令示例。
9万+

被折叠的 条评论
为什么被折叠?



