1. 程式人生 > >svn 回退/更新/取消至某個版本命令詳解

svn 回退/更新/取消至某個版本命令詳解

1. 取消Add/Delete

取消檔案svn revert 檔名取消目錄svn revert --depth=infinity 目錄名2. 回退版本方法1: 用svn merge1) 先 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 ""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 updateupdate (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