1. 程式人生 > >svn伺服器端回退版本

svn伺服器端回退版本

在SVN伺服器上操作(不推薦)

由於誤操作,不小心將錯誤的程式碼提交到了svn上,於是想在伺服器上撤銷本次提交,經過嘗試,發現進行以下步驟的操作即可徹底刪除本次提交:
1.首先找到本次提交後生成的版本號,例如為r224.
2.登入到svn伺服器上,進入到專案的svn目錄.
3.進入db目錄,刪除此目錄下的rep-cache.db。並修改此目錄下的current檔案,將其修改為上一個版本,例如233.
4.刪除db/revs/0/目錄下的224檔案。
5.刪除db/revprops/0/目錄下的224檔案。
至此,伺服器端已經回退到r223版本,此時可以將本地下載到的程式碼刪除,重新從svn伺服器上下載一份程式碼,然後基於此程式碼繼續修改提交。
如果在windows下使用TortoiseSVN,還需要刪除本地的快取,不然會出現再次提交後,其日誌顯示出現錯誤的情況,刪除方法為點選TortoiseSVN的settings,在選擇"Saved Data",點選Clear清除Log message即可。

如何在客戶端將SVN伺服器上的版本回退到一箇舊的歷史版本?(實際使用該方法)

我現在的做法很笨,直接從SVN拿一份舊版本下來,把所有.SVN資料夾都刪除掉,然後覆蓋本地版本,最後將本發版本做為修改再COMMIT到SVN伺服器上去,這樣,SVN伺服器上實際上被“更新”成了一個“舊版本”

恩,我明白了,
先export出一箇舊的版本出來,
然後用這個庫覆蓋當前工作版本,
然後再commit上去,
這樣,儘管SERVER上有了一個新版本,
但是它事實上仍然是一個對舊版本的恢復,
並且,那個舊版本以後的所有更新,都仍然存在。

SVN程式碼的回滾:

  1. 不丟失新建的檔案,獲得最新的SVN版本控制TortoiseSVN-ShowLog-選中你要回滾的版本-右鍵-Export,之後將修改的檔案覆蓋到你的最新版本,commit即可。

  2. 編輯了程式碼,但是想放棄修改,可以直接TortoiseSVN-revert就可以更新到工程的最新版本。

  3. 回到某一個版本,可以直接選擇TortoiseSVN-update to reversion,這樣可以把版本回退到選中的版本,SVN並沒有顯示出有衝突,並且新建立的檔案還在,但是這種不能直接在回退的版本上編輯,因為SVN的控制版本還是在最新的主幹上,需要update並解決衝突。

  4. 從日誌回滾到需要的版本,show log-選中需要的版本-右鍵-update item to reversion.SVN並沒有衝突,並且新建的檔案還在,但是也不能在回退的版本上編輯,需要update解決衝突。

  5. 可以直接show log-選中要清除的版本-右鍵-revert changes from this reversion,這樣可以直接解決衝突並提交。但是新建的檔案都沒有了,選中的這個版本就沒有了。

  6. show log-選中需要回退到的版本-右鍵-revert to this reversion,則選中的版本之後的版本就沒有了,作廢了。