2011-11-28 124 views
11

我想查看(而不是修改)我的存儲庫中幾個文件的舊版本,所以我去了並恢復了這些文件。現在我試圖將這些文件恢復到最新版本,以便它們與我的工作副本中的所有其他文件相匹配,但是當我更新文件夾時,沒有任何更改。TortoiseSVN - 撤銷還原

是否可以撤消恢復?我將這些文件的最新版本複製並粘貼到其他地方,因此它們並沒有完全丟失,但我認爲有一種比將這些文件移回到保存我的工作副本的目錄更簡單的方法。

在此先感謝。

+0

見詳細的解答和程序在這裏:http://stackoverflow.com/questions/1554278/temporarily-put-away-uncommited-changes-in-subversion-a-la-git-stash –

回答

9

我猜你使用了恢復到這個版本上下文菜單中的顯示日誌對話。儘管有這個名字,但它並沒有真正執行回覆操作,至少在Subversion理解這個術語的方式上並非如此。它實際上做的是將修訂更改反向合併到您的工作副本中。所以現在你的工作副本中有未保存的更改,Subversion在更新時會嘗試保留它們。您可以從「檢查修改」對話框中驗證:這些項目應顯示爲「已修改」。

如果是這種情況,您可以通過以下方式丟棄本地更改:工作副本中的「還原」上下文菜單。這一次,它會做一個真正的「恢復」操作。

下次要檢查目錄樹的舊版本時,可以使用日誌對話框中的「更新項目到修訂」上下文菜單。它會做SVN更新,可以很容易地撤消。

+0

是的,這就是我所做的;我沒有意識到術語不同。我按照你的指示,我把我最近的文件放回到我的工作目錄中。感謝您的幫助!雖然我不太清楚「反向合併」的含義。你能解釋一下這是什麼意思嗎? – Emily

+0

[合併](http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.branchmerge.basicmerging)是將對一個分支所做更改複製到另一個分支的操作​​。當您不應用更改以獲取該功能,而是將其相反(刪除該功能)時,它是*反向*。 –

+0

對不起,但「恢復到此修訂版」確實會進行反向合併。然而,「此修訂更新」不會。 – Stefan

0

否。還原丟棄您的本地更改,該存儲庫從來沒有聽說過,所以無法從那裏恢復它們。 TortoiseSVN可能會在客戶端爲你保留備份,但不會。

請注意,這隻意味着您永遠不會返回未提交的本地修改,Update命令仍應該從存儲庫獲取最新版本,而不是您之前明確檢出的任何舊版本。

+0

謝謝爲了您的迴應。當我恢復這些文件時,我實際上沒有進行任何本地更改。假設我的文件夾版本爲100(這是版本庫中的最新版本),並且我將一些文件恢復爲版本50.因此,現在我要將我的工作副本中的這些文件恢復到版本100(除非我誤解這些文件的版本100仍然位於存儲庫中)。在這個過程中我沒有做任何事情。有沒有辦法回到這些文件的版本100,因爲我早先將它們恢復到版本50? – Emily

+0

好吧,在SVN術語中,您沒有「回覆」,您使用TortoiseSVN - > Update to revision ...對話框「更新」(是的,與日常使用不完全相同)到特定修訂版本號。 – themel

+0

是的,我沒有意識到SVN術語和TortoiseSVN術語有點不同。我爲每個文件做的事情是TortoiseSVN - > Show Log - >恢復到這個版本,正如Alvaro G. Vicario在另一個答案中所述。感謝您的幫助! – Emily

2

在SVN中,只有本地機器上的工作副本和服務器上的存儲庫。通過使用還原您已將本地工作副本的內容替換爲來自服務器的內容,並且沒有其他地方SVN保留這些文件的副本。

根據您的IDE,您可能能夠恢復您的更改。例如,Eclipse會跟蹤工作區中每個文件的本地歷史記錄。

但是,如果您想獲得更靈活的版本控制,請參閱GitMercurial

+0

提到這個Eclipse功能只是讓我從一大堆返工中救了我一命! – leokhorn

7

按Ctrl + Z在項目目錄中,如果你沒有重新啓動您的計算機

+0

這個幫了我。該項目是在Visual Studio中打開的,所以我可以選擇性地撤消恢復! –

+0

從來不知道這是可能的。爲我節省了很多時間。謝謝! –

0

要撤消還原:
1.右鍵單擊 - >TortoiseSVN的 - >恢復
2.右鍵單擊 - >SVN更新