ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

svn基本使用方法

svn基本使用方法

一、基本检出与提交

操作命令
检出仓库

svn checkout URL [本地目录]。

检出深度选项

--depth=empty(等价旧写法 -N) 只检出这个目录本身,里面什么都没有
--depth=files 检出该目录下的文件,不包含任何子目录
--depth=immediates 检出该目录下的文件 + 子目录的“空壳”,子目录里是空的(最常用的“一级目录”)

后续按需“放大”某一层
稀疏检出的工作副本不是只读的:之后可以单独把某个子目录补充完整。这里的关键区别是:--set-depth 会永久修改该目录的记录深度,--depth 只对这一次操作生效。

# 单独把某个子目录拉全(递归) svn update --set-depth=infinity project/src/main # 只在本次更新时再多展开一层,不改记录深度 svn update --depth=immediates # 反过来收缩(把某目录内容清掉,只留壳) svn update --set-depth=empty project/docs # 查看当前目录的记录深度 svn info --show-item depth

TortoiseSVN 对应选项
右键 → Checkout 时,在 Checkout Depth 下拉框中选择:

Fully recursive:全递归。检出完整的目录树。

Only this item → empty
Immediate children, including folders → immediates
Fully recursive → infinity
在已检出的目录上,右键 → Update to revision 或 Update 对话框中,也有 Depth 下拉框,并且带 Make depth sticky 复选框,这分别对应 --depth 和 --set-depth。

提交修改svn commit -m "提交说明"
更新到最新svn update

二、文件与目录管理

操作命令
添加文件/目录svn add 文件名
删除文件/目录svn delete 文件名
移动/重命名svn move 源 目标
复制svn copy 源 目标

三、查看状态与信息

操作命令
查看工作副本状态(快速确认本地变动如 :M修改、A添加、?未追踪,x 状态通常表示该文件或目录被外部定义(externals definition)所引用)svn status(st)
查看文件/目录信息svn info [路径]
查看仓库的提交历史,包括作者、日期和描述

svn log [路径] -l n 显示最近n条日志

svn log -v -r 100,只查看某个版本改动了哪些文件(不关心内容)

查看差异svn diff [文件]
列出仓库目录内容svn list (svn ls):列出仓库目录内容。例如,svn ls http://svn.example.com 显示远程文件结构。
查看特定版本的文件svn cat:输出特定版本的文件内容。如 svn cat -r 100 file.c 显示历史版本。

四、分支与标签操作

操作命令
创建分支/标签svn copy 源URL 目标URL -m "说明"
合并分支svn merge [选项] [源路径] [目标路径(默认当前)]
切换分支svn switch 新分支URL

五、撤销与回退

操作命令
撤销本地修改(只恢复"已被版本控制"的东西,新增的"?"文件不会被删,)svn revert 文件,默认不递归,想要整棵树回退,请务必带上 -R 或 --depth=infinity
回退到指定版本svn merge -r 当前版本:目标版本 文件
恢复已删除文件svn revert 文件名(未提交时)

六、常用选项

  • -m "说明":直接添加提交说明
  • --username 用户名:指定用户名
  • --password 密码:指定密码
  • --non-interactive:非交互模式(脚本中使用)
  • -r 版本号:指定版本号

七、实用小技巧

  1. 查看文件修改历史:svn blame 文件名
  2. 清理锁定:svn cleanup
  3. 导出无.svn目录的副本:svn export URL 目录
  4. 忽略文件:svn propset svn:ignore "模式" 目录

以上是 SVN 命令行最常用的操作,适用于日常版本管理。

对merge的总结

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进