SVN 我刚刚用SVN覆盖更新了我本地的代码,悲催的是,我有一些新写的代码忘记提交了,直接被覆盖了!!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN 我刚刚用SVN覆盖更新了我本地的代码,悲催的是,我有一些新写的代码忘记提交了,直接被覆盖了!!!!相关的知识,希望对你有一定的参考价值。

请问各位大侠,有没有办法恢复到我覆盖更新之前的代码啊?在线等。。。QQ350789448

在代码的编写过程中,难免有些错误需要修改,或者想从以前的文件进行代码修改,这样就涉及到版本的追踪,如果你以前提交时日志写的非常清楚,那版本追踪回滚起来就事半功倍、得心应手。下面介绍几种版本回滚的办法:
1.推荐的一种方法是,直接export一个你需要的版本,然后用你export的版本覆盖你的最新的版本,这样你就可以不丢失你新建的文件,同时获得最新的SVN版本控制。
操作步骤:TortoiseSVN→Show log→选中需要回滚的版本→右键→Export。
之后将修改的文件覆盖到你的最新版本,commit即可。
2. 若是你编辑了工程,在没有提交的前提下,你想放弃这些修改,你可以直接选择TortoiseSVN→revert就可以更新到工程的最新的版本。
3. 若是你想退回到某一个版本,你就可以直接选择TortoiseSVN→update to reversion,这样我们就可以把我们的版本回退到你选中的版本去,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。我们需要update并解决冲突。
4.你可以直接选择revert changes from this revision,这样的话你可以直接解决冲突并提交。不过这种方法的不足是,你新建的文件都没有了,整个工程都回退到之前的版本了。
5.可以从日志中回滚到你需要的版本,从日志中选中你需要的版本,然后Update item to reversion就好了,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。我们需要update并解决冲突。
参考技术A 本地有个xxx.cpp.mine文件,把他的.mine后缀删了,得到的代码就是你更新之前的 这样你可以解决了冲突再把你原有代码加进去 应该是最优解了== 参考技术B 兄弟你解决了吗?我和你情况一样啊,4000多行代码覆盖了,也没提交库里 参考技术C svn update 是不会覆盖你的更改的,如果别人的修改跟你的距离很远,svn 会将别人的更新合并到本地文件中,如果距离很近 svn 无法判断如何合并,会生成 .mine .r# .r#-1 原文件 共四个文件,供你选择保留哪些代码,处理后 reserved 一下,除了原文件以外就都删除了,commit 就可以了

建议仔细学习一下手册
参考技术D 如果使用eclispe,还可以看看restore from loclal history

以上是关于SVN 我刚刚用SVN覆盖更新了我本地的代码,悲催的是,我有一些新写的代码忘记提交了,直接被覆盖了!!!!的主要内容,如果未能解决你的问题,请参考以下文章

SVN更新代码的时候会覆盖本地文件吗?

svnupdate会把代码直接覆盖吗

强制 SVN 更新/签出覆盖本地文件

svn,在更新时,如何实现覆盖原有的文件,而不是在文件中多了几道杠,和很多重复代码

从 SVN 更新时是不是可以始终(强制)覆盖本地更改?忽略冲突?

svn命令行用于覆盖和更新本地目录