2010-09-27 146 views
8

我误犯了错变更文件,一个简单的例子的缘故,让我们把它叫做foo.txt的:SVN:恢复到以前的版本

foo.txt的,转速300(正确):

E = mc^2 

foo.txt的,转速301(不正确):

E = mc^3 

如何重新提交转300到下一个承诺?如果我将foo.txt更新为rev 300,我会得到正确的文件,但其状态正确&不需要提交。

注意:这只是foo.txt,我想恢复。 301版的其他修订很重要,我需要保留它们。

+2

[更好的方式恢复到以前的SVN版本的文件?](http://stackoverflow.com/questions/345997/better-way-to-revert-to-a-previous -svn-revision-of-a-file) – 2010-09-27 20:40:12

+0

这似乎不适合我;要么不一样,要么我做错了什么。 – 2010-09-27 20:44:56

+0

哦,等一下,我错过了#在rev#之前的“ - ”。是的,这是重复的。 – 2010-09-27 20:47:09

回答

15
svn merge -r301:300 foo.txt 
svn commit -m 'revert foo.txt to 300' 
2
svn merge -c-301 . 
svn commit -m "Reverting commit 301" 
+0

不应该撤销r301吗?我认为这是一个小写'-c' – 2010-09-27 20:43:41

+0

桑德:真,固定:) – harald 2010-09-27 20:48:58

9

如果您使用的是TortoiseSVN,这非常容易。只需查看该文件的日志,右键单击版本300并选择恢复到此修订版(这是本地操作)。然后,您可以将本地文件提交为302.

(可选)如果在一段时间之前发生这种情况,则可以选择还原此修订版本中的更改。这将只恢复与检入发生的变化(你会在301上执行此操作)。

+0

不,我试过了。它可以让我恢复到该修订版本,但不会将该文件标记为脏。 – 2010-09-27 20:46:44

+0

应该工作,照顾选择“恢复”而不是“更新”。有时叠加图标不显示真实状态。在“提交”时,您应该在列表中将文件视为脏文件。 – jdehaan 2010-09-27 20:49:24

+1

@Jason:奇怪。上次我不得不恢复一个修订版本时,我恰好做了JoshD所说的,它工作得很好。 “ – 2010-09-27 20:49:35