Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux SVN 指令完整速查表:從 Checkout 到分支合併

編輯:Linux 教學

Subversion (SVN) 雖然不如 Git 流行,但許多企業專案仍在使用。本文整理 SVN 核心指令、常用工作流、衝突解決、屬性操作,作為終端機快速查閱手冊。

基礎工作流指令

操作指令說明
棧出專案svn checkout URL [PATH]
svn co URL
從版本庫下載工作副本
更新到最新版svn update [PATH]
svn up
同步版本庫變更到本地
更新到特定版本svn update -r REV PATH如 svn up -r 200 file.c
提交變更svn commit -m "LOG" [PATH]
svn ci -m "LOG"
將本地變更送回版本庫
新增檔案/目錄svn add FILE...納入版本控管(下次 commit 生效)
刪除檔案/目錄svn delete PATH
svn del/rm
標記刪除(下次 commit 生效)
移動/重命名svn move SRC DST
svn mv/rename
保留歷史記錄的移動
複製(建立分支/標籤)svn copy SRC DST -m "LOG"
svn cp
常用於建立分支/標籤

狀態查詢與差異比較

操作指令說明
查看工作副本狀態svn status [PATH]
svn st
顯示本地修改狀態(見下表狀態碼)
詳細狀態(含版本號、作者)svn status -v [PATH]顯示工作版本、最後修改版本、作者
比較本地與基礎版本差異svn diff [PATH]
svn di
顯示未提交的修改內容
比較兩個版本差異svn diff -r REV1:REV2 [PATH]如 svn diff -r 200:201 file.c
查看提交日誌svn log [PATH]顯示歷史提交記錄
查看檔案詳細資訊svn info [PATH]URL、版本庫根、UUID、版本、作者、時間等
列出版本庫目錄內容svn list URL
svn ls
不需 checkout 即可瀏覽

svn status 狀態碼對照

碼含義
(空白)正常,無變更
A已排程新增
D已排程刪除
M內容被修改
R已排程取代(刪除+新增)
C衝突
?未納入版控
I被忽略
X外部定義
K被鎖定

鎖定與衝突解決

操作指令說明
鎖定檔案svn lock -m "MSG" FILE獨佔編輯權(需版本庫支援)
解除鎖定svn unlock FILE釋放鎖定
解決衝突標記svn resolved PATH移除衝突狀態,允許提交(需手動解決內容後執行)
還原本地修改svn revert PATH捨棄本地未提交變更,恢復基礎版本
合併版本區間變更svn merge -r REV1:REV2 PATH將版本區間差異合併到當前工作副本

分支與標籤管理

# 建立分支(在版本庫端直接複製,極快)
svn copy ^/trunk ^/branches/feature-x -m "建立 feature-x 分支"

# 建立標籤(唯讀快照)
svn copy ^/trunk ^/tags/release-1.0 -m "發布 1.0"

# 切換工作副本到分支
svn switch ^/branches/feature-x

# 將分支變更合併回 trunk(在 trunk 工作副本執行)
svn merge ^/branches/feature-x

# 合併特定版本區間
svn merge -r 100:200 ^/branches/feature-x

版本庫 URL 變更

# 情境一:伺服器 IP/域名變更,路徑不變
svn switch --relocate https://old-svn/repo https://new-svn/repo

# 情境二:專案在版本庫內移動位置
svn switch https://svn/repo/new-path

離線可用指令(無需網路)

以下指令僅讀取本地 .svn 中繼資料,無需連線版本庫:

  • svn status
  • svn diff
  • svn revert
  • svn info(顯示本地快取資訊)

實用別名建議(加入 ~/.bashrc)

alias svnst='svn status'
alias svnup='svn update'
alias svnci='svn commit -m'
alias svndiff='svn diff'
alias svnlog='svn log --limit 20'
alias svnadd='svn add --force *  # 遞迴新增所有未版控檔案'

常見問題排查

  • 提交時顯示「Out of date」:先 svn up、解決衝突、再 svn ci。
  • 樹狀衝突:目錄結構變更衝突,需手動處理 svn resolve 或刪除重新 checkout。
  • 鎖定失效:svn cleanup 清理殘留鎖定,或管理員 svnadmin lslocks 強制釋放。
  • 大檔案提交失敗:調整 httpd.conf LimitXMLRequestBody、LimitRequestBody 或使用 svnadmin dump/load 遷移。

SVN 核心哲學:集中式、原子提交、目錄版本化、廉價複製。掌握 checkout → update → edit → add/del → diff → commit → log 循環,配合 branch/merge 工作流,即可駕馭大多數企業專案版控需求。

Copyright © Windows教程網 All Rights Reserved