Subversion (SVN) 作為經典的集中式版本控制系統,至今仍在許多企業專案中扮演關鍵角色。本文系統整理 SVN 核心操作流程,涵蓋倉庫建立、日常開發、版本回溯、分支管理等實戰場景,助你快速掌握團隊協作精髓。
首先在 SVN 伺服器建立版本庫目錄(如 svn_storeDir),本地對應建立工作目錄(如 local_Dir)。進入本地目錄執行檢出命令,即可建立雙向連結:
svn checkout svn://192.168.0.252/Release ./
此步驟將遠端倉庫內容完整拉取至本地,並建立 .svn 隱藏目錄記錄版本元資料。
svn update
確保本地代碼與倉庫一致,避免衝突。
svn add ssDir
svn commit -m "I add a dir to localDir" ssDir
注意:部分 SVN 版本強制要求提交時附帶日誌訊息(-m 參數)。
svn commit -m "I edit some files for a new function"
無需再次 add,SVN 自動追蹤已納入版控的檔案變更。
svn rm ssDir
svn commit -m "I delete a dir from localDir"
svn log:顯示所有版本日誌svn log -r 5:19:正序顯示第 5~19 版本svn log -r 19:5:逆序顯示同區間日誌svn log -r 8:單獨查看第 8 版本svn log -r {2015-07-31}:{2015-06-01}:按日期區間篩選(新舊順)svn update -r 0xxx
svn export [-r REV] URL[@PEGREV] [PATH]
# 範例:導出特定版本目錄
svn export -r 68217 svn://192.168.0.252/CCDT2010/Firmware/demo2 ./
# 導出單一檔案並重命名
svn export -r 68217 svn://192.168.0.252/CCDT2010/Firmware/demo1.txt ./demo1_68217.txt
使用 svn revert 丟棄本地修改,屬本地操作、速度極快:
# 單一檔案
svn revert path/to/file
# 目錄遞歸恢復(含子目錄)
svn revert -R path/to/dir
# 一鍵恢復所有未提交變更
svn revert */**/*
警告:revert 操作不可逆,未提交的修改將永久消失。雖 svn update 也能覆蓋本地變更,但會觸發網路請求,不建議用於此場景。
需透過 svn merge 進行「反向合併」實現回滾:
svn update(假設最新版本號 28)svn log 找到欲回滾版本(假設為 25),可輔以 svn diff -r 28:25 確認差異svn merge -r 28:25 somethingsvn diff 確認無誤後,svn commit -m "Revert revision from r28 to r25, because of ..."(新版本號變為 29)核心三步口訣:svn update → svn log → svn merge -r 新:舊
需開發大型功能且不想干擾主線時,建立分支是最佳實踐:
# 建立分支(伺服器端複製,成本極低)
svn cp -m "create vbase_branch" \
svn://172.16.0.26/trunk/Vbase \
svn://172.16.0.26/wangwj/workDir/branch/vbase_branch
# 檢出分支至本地開發
svn checkout svn://172.16.0.26/wangwj/workDir/branch/vbase_branch ./
測試通過後,再合併回 trunk(合併技巧可參考 svn merge 進階用法)。
svn list URL:瀏覽倉庫目錄結構svn delete URL:直接刪除倉庫路徑(即時生效,需謹慎)svn diff -r id1:id2 fileName:比較兩版本間檔案差異掌握上述核心流程,即可應對 90% 以上的團隊協作場景。建議配合圖形化工具(如 TortoiseSVN、Cornerstone)提升操作效率,命令行則適合腳本自動化與遠端伺服器管理。