SVN:回滚到之前的版本

8

我错误地提交了错误的更改到文件中,为了简单起见,让我们称其为foo.txt:

foo.txt,rev 300(正确):

 E = mc^2

foo.txt,版本号为301(错误):

 E = mc^3

如何将第300个版本重新提交到下一个版本?如果我将foo.txt更新到第300个版本,我会得到正确的文件,但它的状态是正确的,并且不需要提交。
注意:我只想还原foo.txt。第301个版本中的其他修订非常重要,我需要保留它们。

2
可能是如何更好地恢复文件的先前SVN修订版本?的重复问题。 - Sander Rijken
似乎对我不起作用,可能是因为它与我的情况不同或者我做错了什么。 - Jason S
哦,等等,我错过了版本号前面的“-”。是的,这是一个重复。 - Jason S
1
“-”符号的意思是撤销该版本更改。否则,您会得到一个正常的合并,因此您需要尝试应用在该版本中进行的更改(这是无操作的,因为更改已经发生)。 - Sander Rijken
3个回答

15
svn merge -r301:300 foo.txt
svn commit -m 'revert foo.txt to 300'

9

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

如果这是相当长时间之前发生的事情,您可以选择从此版本还原更改。这将仅还原进行此次检查的更改(您需要在301上执行此操作)。


不,我试过了。它让我回到那个版本,但没有将文件标记为脏文件。 - Jason S
应该能正常运行,注意选择“还原”而不是“更新”。有时覆盖标识无法显示实际状态。在“提交”时,您应该在列表中看到文件处于脏状态。 - jdehaan
1
@Jason:很奇怪。上次我需要还原一个版本时,我正是照着JoshD所说的做的,而且完全没问题。 - David Thornley
请注意选择“还原”而不是“更新”——可能就是这样。我在选项列表中没有看到“还原”。 - Jason S
是的,我刚刚又试了一下。如果我右键单击文件,会出现“更新到修订版本...”,但没有还原;还原选项不见了。不知道为什么。 - Jason S
糟糕!我刚刚仔细重新阅读了这个答案,你需要查看该文件的日志。唉,谢谢大家... - Jason S

2
svn merge -c-301 .
svn commit -m "Reverting commit 301"

你不应该撤销r301吗?而且我认为它是小写的-c - Sander Rijken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接