﻿# 如何用 TortoiseSVN 復原錯誤的簽入動作

在一個開發團隊裡，當有人將錯誤的程式碼簽入(Commit)到 Subversion 儲存庫(Repository)去，的確會造成許多人的麻煩，這時程式開發經理應該就要立即出面，將這類的問題排除。

如果目前最新的版本(Revision)是 9 的話，你可能想要將版本復原到 Revision 8，這時候有兩種方法可以做：

1\. 透過 Update to revision.. 將目前的程式碼更新至第 8 版

> **![透過 Update to revision.. 將目前的程式碼更新至第 8 版](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/69dd46cec39d6f8e59a7-Screenshot-080126-174539.png "透過 Update to revision.. 將目前的程式碼更新至第 8 版")  
>   
> 但這種作法是錯的！**
> 
> 因為這方法只是將你的工作目錄更新到舊的版本(第 8 版)，這時重新所做的修改其實都會失敗，因為當你要 commit 的時候，Subversion 就會告訴你必須先更新(SVN Update)過才能 commit，到時就會發生衝突！

2\. 透過 Merge (合併) 將目前的程式碼合併到第 8 版

> **![透過 Merge (合併) 將目前的程式碼合併到第 8 版](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0c1e230ddfd9782781cf-Screenshot-080126-175852.png "透過 Merge (合併) 將目前的程式碼合併到第 8 版")  
>   
> 這才是正確的作法！**
> 
> 因為這等於是將目前的版本 ( 第 9 版 ) 直接合併到第 8 版去，現有的工作目錄還是處於第 9 版的狀態，只是所有程式碼因為執行合併的關係而變成第 8 版的內容而已，當你 Merge 成功以後，還必須 commit 一次，讓第9版修改後的程式簽入到儲存庫 ( 成為第 10 版 )，這時的第 10 版就會跟原本的第 8 版一模一樣了！此時，再請專案成員做一次 SVN Update 就可以讓大家回復到正確程式碼的狀態了！

而將目前的 Revision 合併回上一個 Revision 的方式如下，以下將以 [TortoiseSVN](http://tortoisesvn.net/ "TortoiseSVN") 工具做說明：

1.  先在工作目錄的根目錄顯選取 SVN Merge 功能  
      
    ![透過 Merge (合併) 將目前的程式碼合併到第 8 版](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0c1e230ddfd9782781cf-Screenshot-080126-175852.png "透過 Merge (合併) 將目前的程式碼合併到第 8 版")  
      
    ![開啟 SVN Merge 對話方塊](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/94f6704b90d5e4f37880-Screenshot-080126-180115.png "開啟 SVN Merge 對話方塊")  
      
    
2.  在 From: 的地方選取 "HEAD Revision" ，在 To: 的地方選取 Revision 並設定到你想要還原到的版本編號 ( 此範例是 8 )，最後按下 Merge 按鈕  
      
    ![在 From: 的地方選取 "HEAD Revision" ，在 To: 的地方選取 Revision 並設定到你想要還原到的版本編號 ( 此範例是 8 )，最後按下 Merge 按鈕](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3460864a6c55241b2593-Screenshot-080126-180423.png "在 From: 的地方選取 \"HEAD Revision\" ，在 To: 的地方選取 Revision 並設定到你想要還原到的版本編號 ( 此範例是 8 )，最後按下 Merge 按鈕")  
      
    
3.  此時你將會看到在工作目錄下的檔案已經被異動了，最後再執行 SVN Commit 就可以復原成功了！
