SVN 命令速查
Subversion(SVN)命令快速參考:checkout、update、commit、branch/tag、merge、歷史檢視與倉庫管理——附常用參數與實作範例。
28 條命令
入門
svn checkout <url> [<dir>]從倉庫取出工作副本;首次取得專案檔案時使用。
-r <rev> 指定版本;--depth empty|files|immediates|infinity
svn checkout https://svn.example.com/repo/trunk ./my-projectsvn info顯示工作副本或 URL 的資訊:URL、版本、最後修改時間等。
svn info .日常操作
svn update把工作副本與倉庫同步;可能會合併伺服端的變更。
-r <rev> 同步到指定版本;--accept postpone|base|mine-full|theirs-full|edit|launch
svn update --accept postponesvn status顯示工作副本狀態:修改、新增、刪除、未追蹤的檔案。
-u 顯示伺服端過時資訊;-v 詳細;--quiet 隱藏未追蹤項目
svn status -usvn add <path>將檔案或目錄排入下一次提交的加入清單。
-N 非遞迴(只處理目錄本身);--force 加入已在版本控管的項目
svn add src/utils/ helpers/svn delete <path>從工作副本移除檔案或目錄,並排定於下一次提交時刪除。
--keep-local 保留本地檔案(伺服端不刪除)
svn delete obsolete/old-config.jsonsvn commit -m "<msg>"把本地修改連同日誌訊息送回倉庫。
-m 內聯訊息;-F <file> 從檔案讀取訊息;--no-unlock 保留鎖定
svn commit -m "feat: 新增登入表單驗證"svn diff顯示路徑或版本之間的 unified diff。
-r <rev1>:<rev2> 比較版本;-c <rev> 顯示某個版本帶來的變更;--diff-cmd / -x
svn diff -r HEAD~5:HEAD --summarizesvn revert <path>捨棄本地修改,把檔案/目錄還原成 pristine 狀態。
-R 遞迴;--depth infinite
svn revert -R .分支與標籤
svn copy <src> <dst>在倉庫內以複製方式建立分支或標籤(廉價複製)。
-r <rev> 從指定版本複製;-m 訊息
svn copy ^/trunk ^/branches/feature-x -m "branch: feature-x"svn switch <url>讓工作副本指向其他分支/標籤,無需重新 checkout。
-r <rev> 切換到指定版本;--relocate 重寫 URL 前綴
svn switch ^/branches/feature-xsvn list <url>列出倉庫某目錄下的項目,不取出檔案。
-v 詳細;-r <rev>
svn list -v ^/tags/合併與衝突
svn merge <url[@rev]>把兩個來源/分支之間的差異套用到工作副本。
-c <rev> / -r <rev1>:<rev2> 指定要合併的版本;--record-only 僅作合併追蹤
svn merge ^/trunk -c 12345svn merge --reintegrate <url>把 feature 分支合併回來源分支(舊式做法,1.8 之前)。
svn merge --reintegrate ^/branches/feature-xsvn resolve <path>在 merge/update 之後解決衝突檔案。
--accept base|mine-full|theirs-full|working|theirs-conflict|theirs-full
svn resolve --accept theirs-full conflict.txt歷史與檢視
svn log顯示檔案或倉庫的提交日誌。
-r <rev1>:<rev2> 範圍;-l <n> 限制筆數;-v 詳細路徑;--xml
svn log -l 20 -vsvn blame <file>逐行顯示作者與版本(praise/annotate)。
-r <rev> 以指定版本為基準標註;-v 含版本說明
svn blame src/index.ts | tail -20svn cat <url>[@rev]在不下載的情況下顯示指定 URL/版本的檔案內容。
svn cat ^/trunk/README.md@HEAD屬性與鎖定
svn propset <prop> <value> <path>為檔案或目錄設定屬性(如 svn:ignore、svn:executable、svn:mime-type)。
-F <file> 從檔案取值;--revprop 設定倉庫 revprop
svn propset svn:ignore "node_modules\n.DS_Store" .svn propedit <prop> <path>在編輯器中開啟屬性值以進行修改。
svn propedit svn:ignore .svn lock <target>鎖定檔案,避免其他用戶端提交(需要伺服端啟用相關設定)。
-m "原因";--force 強制取得別人的鎖
svn lock images/banner.png -m "發佈前編輯中"svn unlock <target>解除檔案或目錄上的鎖定。
--force 強制解除他人的鎖
svn unlock images/banner.png倉庫與清理
svn cleanup清理工作副本:移除鎖定、修正時間戳、完成未完成操作。
--diff3-cmd / --remove-unversioned 順便清掉未追蹤項目
svn cleanup /path/to/wcsvn export <url> [<dir>]匯出乾淨的目錄樹(不含 .svn 中繼資料)——打包發佈很實用。
-r <rev> 指定版本;--force 覆寫既有檔案
svn export ^/tags/v1.2.0 ./release-1.2svn import <path> <url> -m "<msg>"把尚未加入版控的目錄樹一次性匯入倉庫。
--no-ignore 包含被忽略的檔案;--auto-props 套用 auto-props
svn import ./src ^/trunk -m "initial import"svn relocate <from-prefix> <to-prefix>改寫工作副本內儲存的倉庫 URL 前綴(伺服器搬家時使用)。
--strict 不符合的前綴會拒絕處理
svn relocate https://old.svn.example.com https://new.svn.example.comPatch
svn diff > patch.diff產生 unified diff,方便分享或用 svn patch 套用。
svn diff > /tmp/feature-x.patchsvn patch <patch-file>套用 svn diff 產生的 unified diff 到工作副本。
--dry-run 預覽;--reverse-cmd
svn patch --dry-run /tmp/feature-x.patch速查頁版本 1.0.0
適用於 SVN 1.10+