我刚开始使用SubVersion时, 想把svn代码库回滚到以前某个版本, 上网找来找去都找不到(那时文档比较少), 让我郁闷了好一阵子. 现在记录一下 SubVersion回滚的方法:
第一种方法: 使用TortoiseSVN进行回滚. 很明显, 这种方法只适用于windows平台. 以下摘自 TortoiseSVN文档:
B.4. 回滚版本库里的版本
B.4.1. 使用版本日志对话框
如果想恢复某个版本或者版本范围的变更,最简单的方法是使用版本日志对话框。这种方法也可以用来撤销最近的若干次变更,把以前的某个版本变成最新版。
1.选中想要恢复变更的文件或者文件夹。如果想要恢复所有的变更,需要选中最顶层的文件夹。
2.选择TortoiseSVN → 显示日志,显示出版本列表。有可能需要使用全部显示或者下100 按钮,把想要恢复的版本显示出来。
3.选中想要恢复的版本。如果想要恢复一个版本范围,选中想要恢复的第一个版本,按住shift键,然后选中想要恢复的最后一个版本。注意,当恢复多个版本的时候,这些版本必须在列表中是连续的。用鼠标右键点击选中的版本(段),然后选择右键菜单 → 恢复这些版本的变更。
4.如果想要把以前的某个版本变成最新版本,右键点击选中的版本(范围),然后选择右键菜单 → 恢复到此版本。就能够撤销被选中版本后面所有的变更。
工作拷贝已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。
B.4.2. 使用合并对话框
如果要撤销更大版本范围的变更,可以使用合并对话框。上一个方法在后台使用了合并的机制,在这个方法里我们直接使用合并功能。
1.在工作拷贝上选择TortoiseSVN → 合并。
2.在起始:文本框里输入想要恢复的变更所在的分支或标签的URL。它也将作为默认URL。
3.在起始版本文本框里输入当前工作拷贝的版本号。如果能够保证没有其他人会提交变更,可以使用最新版本。
4.确认使用“起始:”的 URL检查框处于被选中的状态。
5.在结束版本里输入想要恢复到的版本号。比如,想要恢复的最小版本号的前一个版本号。
6.点击合并按钮完成合并。
工作拷贝已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。
B.4.3. 使用svndumpfilter
因为TortoiseSVN绝不会丢弃数据,所以那些被回滚的版本仍然以中间版本的形式被保留在版本库里。只是最新版本已经回到了以前的状态。如果想让版本库里的某些版本彻底消失,擦去这些版本曾经存在过的所有痕迹,就必须采取更极端的手段。不推荐使用这种方法,除非有很好的理由。比如某人向一个公开的版本库里提交了一份机密文件。
从版本库里删除数据的唯一方法就是使用svnadmin这个Subversion命令行工具。具体如何实现请参考Subversion手册。
第二种方法: 使用SubVersion自带的svn merge 命令. 这种方法适用于任何能使用SubVersion的平台. 以下摘自 <使用SubVersion进行版本控制> 4.4.2节:
svn merge另一个常用的做法是取消已经做得提交,假设你愉快的在/calc/trunk工作,你发现303版本对integer.c的修改完全错了,它不应该被提交,你可以使用svn merge来“取消”这个工作拷贝上所作的操作,然后提交本地修改到版本库,你要做得只是指定一个相反的区别:
$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk U integer.c $ svn status M integer.c $ svn diff … # verify that the change is removed … $ svn commit -m "Undoing change committed in r303." Sending integer.c Transmitting file data . Committed revision 350.
我们可以把版本库修订版本想象成一组修改(一些版本控制系统叫做修改集),通过-r选项,你可以告诉svn merge来应用修改集或是一个修改集范围到你的工作拷贝,在我们的情况例子里,我们使用svn merge合并修改集#303到工作拷贝。
记住回滚修改和任何一个svn merge命令都一样,所以你应该使用svn status或是svn diff来确定你的工作处于期望的状态中,然后使用svn commit来提交,提交之后,这个特定修改集不会反映到HEAD版本了。
继续,你也许会想:好吧,这不是真的取消提交吧!是吧?版本303还依然存在着修改,如果任何人取出calc的303-349版本,他还会得到错误的修改,对吧?
是的,这是对的。当我们说“删除”一个修改时,我们只是说从HEAD删除,原始的修改还保存在版本库历史中,在多数情况下,这是足够好的。大多数人只是对追踪HEAD版本感兴趣,在一些特定情况下,你也许希望毁掉所有提交的证据(或许某个人提交了一个秘密文件),这不是很容易的,因为Subversion设计用来不丢失任何信息,每个修订版本都是不可变的目录树 ,从历史删除一个版本会导致多米诺效应,会在后面的版本导致混乱甚至会影响所有的工作拷贝。 [9]
解释一下, svn merge -r 303:302 http://svn.example.com/repos/calc/trunk 这个命令是把当前目录当作工作拷贝. 如果想指定工作拷贝路径(如: c:/test), 则命令变成以下:
svn merge -r 303:302 http://svn.example.com/repos/calc/trunk c:/test
转载之 http://blog.csdn.net/riag/article/details/1630819
分享到:
相关推荐
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回滚错误,合并不同开发者的修改,并保持代码的一致性。"SVN项目版本库模板"通常是...
1. **版本管理**:SVN记录每一步修改,可以随时回滚到任何历史版本。 2. **团队协作**:多人同时开发同一项目,避免了代码冲突,提高了效率。 3. **代码审查**:通过查看提交历史,可以进行代码审查,提升代码质量...
7. **版本控制操作**:包括但不限于添加文件、删除文件、更新、提交、合并、回滚等,这些操作在版本控制中至关重要。 8. **冲突解决**:当多个用户同时修改同一文件时,svn会检测到冲突,用户需要手动解决这些冲突...
它允许开发者跟踪文件的修改历史,协同工作,以及回滚到以前的版本。SVN1.8是Subversion的一个重要版本,引入了多项改进和新特性。 在SVN1.8中,主要更新包括: 1. **性能提升**:SVN1.8通过优化内部数据结构和...
- 版本控制:SVN的核心功能是版本控制,它可以记录每次文件或目录的修改,使得团队成员可以随时回滚到任何历史版本。 - 仓库(Repository):存储所有版本历史的地方,类似于数据库,保存了所有文件和目录的完整...
**SVN中文版本客户端64位版本** **一、什么是SVN?** SVN,全称为Subversion,是一个开源的版本控制系统,用于管理文件和目录的版本历史。它跟踪项目中的每一次修改,允许用户回滚到之前的任何版本,同时提供协同...
**回滚到版本号10**:`svn merge -r20:10 [文件或目录]`,注意版本号的顺序,表示反向合并。 5. **查看当前工作版本中的文件**,如`test.cpp`和版本号10中文件的差异:`svn diff -r10 test.cpp`。 6. **若无差异...
它允许团队成员协同工作,记录每次更改,以便于回滚错误,查看历史版本,并管理多个开发分支。"SVN取版本工具"是专为方便用户从SVN服务器上获取特定版本的文件而设计的实用程序。 在SVN的工作流程中,用户通常会...
3. **版本回溯**:如果新的代码引入了问题,可以轻松地回滚到之前的稳定版本。 4. **代码审查**:通过查看提交的历史,可以进行代码审查,提升代码质量。 5. **学习平台**:新手可以通过查看他人代码的历史修改,...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理多个人协同开发的源代码或者其他文件。它允许开发者在不冲突的情况下同时编辑同一份文件,并记录每一次更改,便于追踪历史、合并修改以及回滚到特定...
为了回滚版本,我们需要将此文件的内容更改为想要回滚的目标版本号。例如,如果目标是第20个版本,那么`current`文件的内容应被修改为“20”。 2. **调整版本时间**:此外,还可以通过编辑`revprops`目录下的版本...
SVN通过存储项目的历史版本,使得团队成员可以随时回滚到任何之前的版本,避免了数据丢失和冲突。 2. SVN工作原理:SVN服务器存储着项目的所有版本,客户端通过连接服务器获取项目文件。当用户对文件进行修改并提交...
在软件开发过程中,版本控制是至关重要的,它可以帮助团队成员协同工作,跟踪代码变更,以及回滚到历史版本。Subversion(SVN)是一种广泛使用的版本控制系统,而Enterprise Architect(EA)是流行的UML建模工具,...
首先,svn的版本管理主要通过版本库实现,每个提交都会为项目增加一个新的版本,开发者可以随时回滚到历史版本,查看每次修改的细节。这有助于追溯错误来源,防止误操作,并支持多人同时编辑同一文件。 分支是svn的...
2. **版本追踪**:SVN记录每次提交的更改,使得用户可以查看文件的历史版本,回滚到特定版本,对比不同版本之间的差异。 3. **分支与合并**:分支允许团队成员在不影响主线开发的情况下进行并行开发,完成后通过...
4. 撤销更改:如果出现错误或不满意的结果,可以轻松地回滚到之前的版本。 5. 分支与合并:SVN支持创建分支,让开发者在不影响主分支的情况下进行实验性开发,完成后可合并回主分支。 二、SVN操作流程 1. 安装与...
它允许团队成员协同工作,记录每次更改,以便于回滚错误,查看历史版本,并管理多个开发分支。在某些情况下,可能需要清理文件夹中的.SVN子目录,这通常是由于不再需要这些版本控制信息,或者为了减小文件夹大小。...
7. 回滚(Revert):撤销本地未提交的更改,恢复到上一版本。 8. 标签(Tag)与分支(Branch)管理:支持创建和管理项目里程碑(标签)和开发分支。 三、Eclipse SVN插件的高级特性 1. 集成开发环境:在Eclipse中,...
SVN还支持回溯到历史版本,如果发现合并后的问题,可以通过回滚操作恢复到之前的稳定状态。 8. **持续集成与自动化** 在大型项目中,可能还会结合持续集成工具(如Jenkins、GitLab CI/CD等)自动化合并和测试流程...
开发者可以随时查看代码历史,回滚到任何版本,甚至对比不同版本之间的差异。SVN的分支和合并功能也使得并行开发和代码审查变得更加便捷。 结合JIRA和SVN,软件团队可以实现更加精细化的协作。当在JIRA中创建或更新...