2010-09-27 186 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