Linux 命令速查
开发工具 man svn

svn

Subversion 集中式版本控制系统的命令行客户端

返回

补充说明

svn 是 Apache Subversion 的客户端,采用“集中式”版本控制模型:所有历史都保存在服务器仓库中,工作副本从仓库检出,提交直接写回服务器。它在文档、二进制文件和企业内网项目中仍很常见,与 Git 的分布式模型不同。

日常流程与 Git 类似但语义有别:svn update 拉取他人改动,svn commit 直接提交到仓库,没有本地提交一说;svn add 只把新文件标记为待加入,必须再 commit 才真正入库。冲突需要 svn resolve --accept=... 明确标记解决。

常用目录约定是 trunk/(主干)、branches/(分支)、tags/(标签),分支和标签本质上都是廉价的仓库内拷贝。认证信息缓存在 ~/.subversion/auth/,切换账号时可删除对应缓存。

语法

svn 子命令 [选项] [参数]

常用子命令

  • checkout(co):从仓库检出一份工作副本
  • update(up):把工作副本更新到最新版本
  • status(st):查看工作副本的修改状态
  • add:把新文件或目录纳入版本控制
  • delete(rm):从版本控制中删除
  • commit(ci):提交改动到仓库
  • log:查看提交历史
  • diff:查看差异
  • revert:撤销本地未提交的修改
  • info:显示工作副本或 URL 的信息
  • merge:合并分支改动
  • export:导出不含 .svn 目录的干净副本
  • switch(sw):把工作副本切换到另一个 URL

实例

# 检出一个仓库
svn checkout https://svn.example.com/repo/trunk myproject

# 查看当前修改
svn status

# 添加文件并提交
svn add newfile.c
svn commit -m "add newfile.c"

# 更新到最新版本
svn update

# 撤销某个文件的本地修改
svn revert src/main.c

# 查看最近 5 条日志
svn log -l 5

# 导出不含版本控制元数据的副本
svn export https://svn.example.com/repo/trunk /tmp/release

参考链接