2008-12-04 52 views
17

我們遇到了某人搞砸了我們的SVN服務器的提交情況。很多文件被刪除等如何將HEAD更改爲之前的版本

問題:是什麼使先前(給壞提交)修改HEAD修訂版的技術?我已經在這裏看到了關於這麼做的一個文件的討論,但是我們想讓它像最後一次提交從未發生過。有任何想法嗎?

所有這些答案似乎是正確的。我將abatishchev的答案標記爲正確答案,因爲我使用的是Tortoise SVN,這是我實際使用的方法。

回答

9

也許你可以顯示日誌,檢查以前的版本(N-1),在上下文菜單中選擇恢復到此版本並提交更改(它會變成N + 1,其中n是當前壞頭)

+1

http://stackoverflow.com/questions/217190/how-to-quarantine-a-specific-subversion-revision – 2008-12-04 12:39:46

+3

這並沒有爲我工作。當我恢復了我的本地更改到以前的版本,並試圖提交,SVN告訴我,我不能犯,直到更新我的工作拷貝到頭,有點失敗的目的:/ – Sinaesthetic 2013-10-23 17:34:07

1

您可以使用svnadmin dumpsvnadmin load來完成此操作。這是一種非常蠻力的方式,但我相信這是做到這一點的唯一方法。

對這個問題的答案可以幫助:Nuking huge file in svn repository

+0

這將打破那些頭上修訂workingcopies,因爲他們無法更新從版本庫不知道一個版本。 – 2008-12-04 10:00:40

19

最乾淨的方法是undo changes

你可以用svn merge來「撤銷」你工作副本的變化,然後提交本地修改存儲庫。所有你需要做的是指定一個反向差異。 (您可以通過一個等效--change -303指定--revision 303:302,或做到這一點。)

我意識到它並不「使它像去年承諾從來沒有發生過」,在承諾仍然是歷史的一部分的感覺,但我相信在歷史上保持這種不良行爲會更好。
它可能包含一些可以查詢/比較的工作,以便輕鬆地重新創建一個新的正確提交。


即使:

  • 的SVN(1.5)手冊提未來obliterate命令,將完成的永久刪除信息的任務,和
  • 提及svndumpfilter作爲一個可能的解決方法(在它提供了通過充當基於路徑的過濾器來快速和容易地修改該轉儲文件數據的能力)

...它是最好不要試圖將SCM工具轉化爲它本來不打算做的事情。歷史化(以及與分支並行化)是SCM的兩個主要特徵。

+0

我們沒有任何問題,保持承諾,只是想更新HEAD到適當的代碼庫。要試試這個。謝謝。 – jwalkerjr 2008-12-04 06:50:18

0

使用TortoiseSVN,如果你想只看到倉庫處的違規之前的版本提交:

  • 打開與TortoiseSVN的版本庫瀏覽器URL。
  • 注意的是,修訂版號碼和更改HEAD到該號碼 - 點擊右上方的按鈕1。

enter image description here

相關問題