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

  • 2015-8-11 09:10
  • PHP二次開發網
  • 閱讀(4322)
  • 評論(0)
  • 來源:互聯網
  • 摘要: 1. 取消Add/Delete取消文件svn revert 文件名取消目錄svn revert --depth=infinity 目錄名2. 回退版本方法1: 用svn merge1) 先 svn up,保證更新到最新的版本,如20;2) 然后用 svn log ,查看歷史修改,找出要恢復 ...
    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 ""
    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

    PHP技術交流QQ群:422137578

    除非注明,文章均為 PHP二次開發 原創,轉載請注明本文地址:http://www.fujvln.live/article-1855-1.html

    相關閱讀

    最新評論

    用戶名:  *

    郵 箱:  *

    網 址: 注意加上“http://”哦!