歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> SVN代碼回滾問題

SVN代碼回滾問題

日期:2017/3/3 16:12:13   编辑:關於Linux

第一種情況:當代碼還未提交時

這種情況下,使用 svn revert 就能取消之前的修改。

# svn revert [-R] somefile

其中somefile可以是(目錄或文件的)相對路徑也可以是絕對路徑。

當somefile為單個文件時,直接svn revert somefile就行了;

當somefile為目錄時,需要加上參數-R(Recursive,遞歸),否則只會將somefile這個目錄改動。

在這種情況下也可以使用svn update命令來取消對之前的修改,但不建議使用。因為svn update會去連接倉庫服務器,耗費時間。

注意:svn revert本身有固有的危險,因為它的目的是放棄未提交的修改。一旦你選擇了恢復,Subversion沒有方法找回未提交的修改。

第二種情況:改動已經被提交

這種情況下,用svn merge命令來進行回滾,回滾的操作過程如下:

1、保證我們拿到的是最新代碼:

svn update

假設最新版本號是28。

2、然後找出要回滾的確切版本號:

svn log [somefile]

如果log很多,可以使用參數--limit

svn log --limit 10 [somefile]

假設根據svn log日志查出要回滾的版本號是25,此處的somefile可以是文件、目錄或整個項目

如果想要更詳細的了解情況,可以使用

svn diff -r 28:25 [somefile]

3、回滾到版本號25:

svn merge -r 28:25 [somefile]

為了保險起見,再次確認回滾的結果:

svn diff [somefile]

發現正確無誤,提交。

4、提交回滾:

svn commit -m "Revert revision from r28 to r25,because of ..."

提交後版本變成了29。

將以上操作總結為三條如下:

1. svn update,svn log,找到最新版本(latest revision)

2. 找到自己想要回滾的版本號(rollback revision)

3. 用svn merge來回滾: svn merge -r 28:25 somefile

注意:雖然 svn up -r 25 somefile 也可以使文件回滾,但是當提交時由於不是最新版本而無法提交,還需要先更新,拷貝,再提交,所以不建議使用。

補充:

svn忽略文件或文件夾

svn propset svn:ignore '*' template_c/

作者:51cto博客 phper-每天一點點

 

Copyright © Linux教程網 All Rights Reserved