今天早上,我设法通过以下方式射击自己:
幸运的是在这种情况下我在星期五离开工作之前做了一个“svn diff> temp.txt”,而temp.txt文件仍然在我的硬盘上,所以我能够将该文件输入“补丁” “并恢复我失去的变化。
但是对于我将来的参考(即下次我犯同样的愚蠢错误)...有没有办法告诉svn撤消“svn revert”? svn是否在任何地方保留本地/未签入差异的备份?
答案 0 :(得分:98)
有一个解决方案...... 转到您的回收站,您将找到已删除文件的最新版本。 乌龟“扔”回收箱中的每个文件都会回收垃圾箱。
答案 1 :(得分:72)
不,(绝对)否。
如果你对Subversion说它应该还原一个文件,所有的变化都会被风吹走。
只有你的记忆可以让他们回来。
例外:您添加的新文件只会丢失“添加”状态,但文件将保留在此目录中,只有状态未知(“?”)
平台/软件例外:在Windows上使用TortoiseSVN,Revert首先将文件投入回收站,然后将其还原。您可以深入了解回收站以恢复文件。
答案 2 :(得分:30)
不是特定的Subversion,但是如果您正在使用Eclipse,那么您可以在当地历史中试试运气。
现在,更多一些Subversion具体:如果你不想为你做的每一个改变做一个分支,你可以在本地检查一些trunk(trunk-modif-1,trunk-modif- 2 ...)。每个“修改”都在一个单独的树上完成,您只需要保留一个列表,其中哪个检出对应于哪个修改。
或者您可以在本地使用Git,但我从未尝试过。
答案 3 :(得分:13)
最近这个错误没有将新文件更改(大约10个)提交到SVN上,而且由于我的愚蠢错误,它们都消失了。但是为我节省的是上下文菜单中的“恢复以前的版本”选项。 Phew是一种解脱和教训。
答案 4 :(得分:7)
如果您使用 svn命令行客户端,则无法恢复文件。
但如果你使用TortoiseSVN作为你的svn客户端,你可以恢复它们。 TortoiseSVN会自动将它们移动到您的回收站。您可以在意外还原后从那里恢复它们。
这是TortoiseSVN中的可配置选项。它位于设置 - >下对话1 - >在还原时使用回收站。
默认情况下,它会被选中,这意味着文件会被移动到回收站。如果你想要(大多数时候你都不在乎禁用它。如果你有理由,请让我也知道)
答案 5 :(得分:5)
如果您使用的是InteliJ,那么您就是一个幸运的人。在顶部菜单上,您有一个版本控制选项,在其下面您将找到本地历史记录选项,您可以在其中找到所选文件的所有历史记录,包括您对该文件所做的所有操作(更新,提交,还原)。
祝你好运, Arkde答案 6 :(得分:4)
此外,如果您还原了.NET代码(.cs文件等)并且在还原之前构建了应用程序但是在进行了更改之后,您可以使用任何反射器工具从组件文件中恢复更改代码。
答案 7 :(得分:1)
我恢复了解决方案(Visual Studio + AnkhSVN)并丢失了少量文件的更改。我无法在回收站中找到该文件。
但是我使用Handy Recovery恢复了丢失的文件,即SVN只是在恢复时删除了我的文件。
使用任何数据恢复软件来恢复还原的文件(例如试用Handy Recovery)
答案 8 :(得分:1)
我非常幸运地在Eclipse的历史浏览器中找到了文件(Local Revisions)的本地更改日志。我一直在检查差异,在覆盖之前我已经对文件进行了几次保存。
答案 9 :(得分:0)
不,SVN没有保留日志或备份(尽管在其他答案中提到了TortoiseSVN的解决方案)。
但是如果有人正在浏览答案而在OP的问题中没有注意到这个评论:
"幸运的是,在这种情况下,我做了一个" svn diff> TEMP.TXT"在星期五离开工作之前,temp.txt文件仍在我的硬盘上,所以我能够将该文件输入到#34; patch"并恢复我丢失的变化。"
我认为这是一个常见的范例,可以做到这一点。在你做“恢复”之前。如果你养成这样做的习惯,即使差异只是回应终端,你至少可以找到一条途径来恢复你丢失的变化。