参考链接:
http://blog.csdn.net/teng_ontheway/article/details/18361157
http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html
工作中如果多人开发的话就需要使用git管理工具或者SVN管理工具对项目进行版本控制,由于多人开发难免会因为操作不当而造成在合并时候产生冲突,如果你幸运的话提前发现冲突及时解决也可以顺利的完成工作,可是如果对于操作不当而忽视了冲突的所在,直接就把项目的代码提交了服务器,那应该怎么解决呢?下边仅个人的一个经历做一个小小的总结。希望能帮助到大家。
温馨提示:如果对SVN版本控制的配置和操作还不了解的朋友可以去参考下边给大家推荐的两个链接去学习一下🙂
#SVN的配置可以参考这篇博客:
http://blog.csdn.net/gf771115/article/details/41008853
#SVN的基本操作可以参考这篇博客:
http://blog.csdn.net/kerry_deng/article/details/46287389
问题描述一:
由于自己误操作后将代码提交(commit)给了服务器,后来却发现代码是错误,可是提交的这个版本已经将服务器上一个版本的代码给覆盖了,这是后该怎么办?
~~没关系你可以将当前项目的版本恢复到提交之前的版本
问题分析:由于服务器是非常重要的地方,不能乱删东西,而且服务器上的项目版本都是递增的,所以我们客户选择恢复(回滚)到指定版本然后再次提交覆盖错误的那个版本。
「解决方法」
步骤一:获取最新版本的项目
《1》、打开终端
在终端中输入cd + 「项目的路径」(温馨提示:可以将项目的文件夹直接拖在这里
) 回车
再输入 ls 回车 确保已经进入到项目的文件夹中如下图
显示demo
《2》、输入
svn update
命令
如果正常的话就直接进行下一步,如果出现下图中的错误,那么请输入svn upgrade
错误提示
紧接着会出现如下画面:
输入svn upgrade命令后的画面
《3》、找到要恢复(回滚)到的版本号,如果不清楚输入下边的命令查看
svn log | more
输出项目的所有版本信息svn diff -r version1: version2 PATH(项目路径)
version1和version2 可以是相邻的版本号,也可以是有间隔的版本号会输出每个版本的信息
《4》、假如当前的版本是3251,需要回滚到2804.使用merge命令,会出现如下画面
svn merge -r 3251:2804 PATH(项目路径)
输入merge命令后出现的结果
《5》、merge命令结束后可以使用
svn diff PATH(项目路径)
命令确认结果,出现如下画面证明操作一切正常
确认结果
**《6》、输入
svn ci PATH -m "Revert version from xxx to xxx because..."
命令提交后就可以将服务器上的版本给覆盖啦! **
"Revert version from xxx to xxx because..."也可以写中文的,这其实就是每个项目版本的描述信息。
问题描述二:
如果只在本地仓库修改后未提交(没有commit给服务器)
#不优雅的解决方法:
这种情况下,见有的人的做法是删除work copy中文件,
然后重新update,恩,这种做法达到了目的,
但`不优雅,因为这种事没必要麻烦服务端。
#优雅的解决方法:
svn revert [-R] PATH
PATH可以是准备回滚的文件、目录,如果想把某个目录下的所有文件包括子目录都回滚,加上-R选项。