1. 取消Add/Delete
取消文件
svn revert 文件名
取消目錄
svn revert --depth=infinity 目錄名
2. 回退版本
方法1: 用svn merge
1) 先 svn up,保證更新到最新的版本,如20;
2) 然后用 svn log ,查看歷史修改,找出要恢復的版本,如10 。如果想要更詳細的了解情況,可以使用svn diff -r 10:20 [文件或目錄];
3) 回滾到版本號10:svn merge -r 20:10 [文件或目錄],注意版本號之間的順序,這個叫反向合並;
4) 查看當前工作版本中的文件,如test.cpp和版本號10中文件的差別:svn diff -r 10 test.cpp, 有差別則手動改之;
5) 若無差別,則提交:svn ci -m“back to r 10,xxxxx” [文件或目錄]。這時svn庫中會生成新的版本,如21。
方法2: 用svn up
前2步如方法1,然后直接 svn up -r 10。當前的工作版本就是版本10了。但是注意,這時svn庫中並不會生成新的版本,下次svn up之后,還是會回到當前的版本。
========================
改動已經被提交(commit)。
用svn merge命令來進行回滾。
回滾的操作過程如下:
1、保證我們拿到的是最新代碼:
svn update
假設最新版本號是28。
2、然后找出要回滾的確切版本號:
svn log
假設根據svn log日志查出要回滾的版本號是25,此處的something可以是文件、目錄或整個項目
如果想要更詳細的了解情況,可以使用svn diff -r 28:25 ""
svn log -v -r 34 查看當前文件夾下某個版本的修改文件列表信息
3、回滾到版本號25:
svn merge -r 28:25 ""
為了保險起見,再次確認回滾的結果:
svn diff ""
發現正確無誤,提交。
4、提交回滾:
svn commit -m "Revert revision from r28 to r25,because of ..."
提交后版本變成了29。
將以上操作總結為三條如下:
1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滾的版本號(rollbak revision)
3. 用svn merge來回滾: svn merge -r : something
更新至某個版本
svn update -r 版本號
svn help update
update (up): 將版本庫的修改合並到工作副本中。
用法: update [PATH...]
如果沒有指定版本,則將工作副本更新到 HEAD 版本。否則同步到 -r 選項所
指定的版本。
每更新一項就輸出一行信息,使用首字符來報告執行的動作。這些字符的含義是:
A 已添加
D 已刪除
U 已更新
C 合並沖突
G 合並成功
E 已存在
R 已替換
第一列字符報告項目本身。
第二列表示報告項目屬性。
第三列中的字符“B”表示此文件上的鎖被終止或竊取。
第四列中的字符“C”表示樹沖突,同時“C”出現在第一列或第二列,分別表示
內容沖突或屬性沖突。
如果使用了 “--force” 選項,在工作副本中未版本控制的障礙路徑,不會自動
導致簽出失敗。 如果障礙路徑與版本庫中的對應路徑類型相同(文件或目錄),它
將成為受版本控制的路徑,但是內容不改變。它意味着障礙路徑的子孫,也可能
是障礙路徑,同樣會受版本控制。對於障礙路徑中的文件,如果與版本庫內的
不同,將視為工作副本發生本地修改。版本庫中的所有屬性都應用於障礙路徑。
用第一列字符 “E” 來報告障礙路徑。
如果工作副本中並沒有指定的更新目標,但是有其父目錄,那么就在指定路徑上
將目標檢出到其父目錄中。如果使用了選項 --parents,就會創建目標的所有不
存在的父目錄 (使用選項 --depth=empty)。
使用“--set-depth”選項設置此操作目標的工作副本之新深度。
有效選項:
-r [--revision] ARG : ARG (一些命令也接受ARG1:ARG2范圍)
版本參數可以是如下之一:
NUMBER 版本號
'{' DATE '}' 在指定時間以后的版本
'HEAD' 版本庫中的最新版本
'BASE' 工作副本的基線版本
'COMMITTED' 最后提交或基線之前
'PREV' COMMITTED的前一版本
-N [--non-recursive] : 過時;嘗試 --depth=files 或 --depth=immediates
--depth ARG : 限制操作深度是 ARG ('empty', 'files',
'immediates', 或 'infinity')
--set-depth ARG : 設置工作副本的新深度為 ARG('exclude',
'empty', 'files', 'immediates', 或 'infinity')
-q [--quiet] : 不打印信息,或只打印概要信息
--diff3-cmd ARG : 使用 ARG 作為合並命令
--force : 強制操作運行
--ignore-externals : 忽略外部項目
--changelist [--cl] ARG : 只能對修改列表 ARG 的成員操作
--editor-cmd ARG : 使用 ARG 作為外部編輯器
--accept ARG : 指定自動解決沖突動作
('postpone', 'working', 'base', 'mine-conflict',
'theirs-conflict', 'mine-full', 'theirs-full',
'edit', 'launch')
(shorthand: 'p', 'mc', 'tc', 'mf', 'tf', 'e', 'l')
--parents : 創建中間目錄
全局選項:
--username ARG : 指定用戶名稱 ARG
--password ARG : 指定密碼 ARG
--no-auth-cache : 不要緩存用戶認證令牌
--non-interactive : 不要交互提示
--trust-server-cert : 不提示的接受未知的證書頒發機構發行的 SSL 服務器證書(只用於選項 “--non-interactive”)
--config-dir ARG : 從目錄 ARG 讀取用戶配置文件
--config-option ARG : 以下屬格式設置用戶配置選項:
FILE:SECTION:OPTION=[VALUE]
例如:
servers:global:http-library=serf