1. 程式人生 > >從svn上回滾版本和解決衝突

從svn上回滾版本和解決衝突

提交SVN後想回滾到舊版本。

選擇TortoiseSVN→Repo-browser,想從SVN上直接回滾到舊版本,結果發現根本沒有這個選項,無法實現。

右鍵WC(working copy)→TortoiseSVN→Update to revision,可以把WC回滾到某一版本,但是這個舊版本的檔案卻不能更新到SVN,SVN上還是最新的版本。若是刪掉SVN上的最新版本的檔案,再把本地的舊版本檔案新增入SVN,這也不是不可以,只是這樣,就丟失了這個檔案的更新記錄。

========================

最終被我找出一個有效的辦法:

如果想恢復某個版本或者版本範圍的變更,最簡單的方法是使用版本日誌對話方塊。這種方法也可以用來撤銷最近的若干次變更,把以前的某個版本變成最新版。

  1. 選中想要恢復變更的檔案或者資料夾。如果想要恢復所有的變更,需要選中最頂層的資料夾。

  2. Select TortoiseSVN → Show Log to display a list of revisions. You may need to use Show All or Next 100 to show the revision(s) you are interested in.

  3. Select the revision you wish to revert. If you want to undo a range of revisions, select the first one and hold theShift

     key while selecting the last one. Note that for multiple revisions, the range must be unbroken with no gaps.Right click on the selected revision(s), then select Context Menu → Revert changes from this revision.

  4. 如果想要把以前的某個版本變成最新版本,右鍵點選選中的版本(範圍),然後選擇右鍵選單 → 恢復到此版本。就能夠撤銷被選中版本後面所有的變更。

工作副本已經恢復到了變更以前的狀態。檢查恢復後的結果,然後提交變更。

解決衝突(merge,update都有可能出現衝突,衝突的檔案會出現黃色感嘆號,並生成幾個臨時檔案):

1.以merge為例,merge出現衝突時,會彈出框


2.現在resolve all later,然後再log窗裡統一解決衝突:


3.edit conflicts,彈出對比工具




圖中左邊上角代表merge的來源,右上角代表merge目標檔案,下面是目標檔案的編輯區域(上面不可以編輯),白色區域為沒有變化的區域,黃色為上個版本的內容,紅色為這個版本的內容(下面編輯區的紅色?代表最終內容還沒有確認),我們在下面編輯區的紅色區域寫上合併後的內容,儲存,然後mark as resolved就ok了