SVN基础命令速查表
📋 目录
🔧 基本操作
检出代码
# 检出整个仓库
svn checkout <URL> [PATH]
# 检出特定版本
svn checkout <URL> [PATH] -r <版本号>
# 检出特定目录
svn checkout <URL>/trunk [PATH]
# 示例
svn checkout https://svnbucket.com/user/project ./my-project
svn checkout https://svnbucket.com/user/project/trunk ./trunk -r 100
更新代码
# 更新到最新版本
svn update [PATH]
# 更新到特定版本
svn update [PATH] -r <版本号>
# 更新特定文件
svn update file.txt
# 示例
svn update
svn update -r 150
svn update src/main.js
提交更改
# 提交所有更改
svn commit [PATH] -m "提交信息"
# 提交特定文件
svn commit file1.txt file2.txt -m "提交信息"
# 强制提交(不检查)
svn commit --no-unlock [PATH] -m "提交信息"
# 示例
svn commit -m "修复登录bug"
svn commit src/ -m "更新源代码"
查看状态
# 查看工作副本状态
svn status [PATH]
# 显示详细信息
svn status -v [PATH]
# 显示忽略的文件
svn status --no-ignore [PATH]
# 示例
svn status
svn status -v src/
📁 文件管理
添加文件
# 添加新文件
svn add <文件路径>
# 添加目录
svn add <目录路径>
# 添加所有新文件
svn add . --force
# 示例
svn add newfile.txt
svn add src/newmodule/
svn add . --force
删除文件
# 删除文件
svn delete <文件路径>
# 删除目录
svn delete <目录路径>
# 强制删除
svn delete --force <路径>
# 示例
svn delete oldfile.txt
svn delete src/oldmodule/
移动/重命名
# 移动文件
svn move <源路径> <目标路径>
# 重命名文件
svn move oldname.txt newname.txt
# 示例
svn move src/old.js src/new.js
svn move file.txt docs/file.txt
复制文件
# 复制文件
svn copy <源路径> <目标路径> -m "提交信息"
# 复制到不同位置
svn copy file.txt backup/file.txt -m "创建备份"
# 示例
svn copy src/main.js src/main_backup.js -m "创建备份"
🌿 分支管理
创建分支
# 创建分支
svn copy <源URL> <分支URL> -m "创建分支"
# 从主干创建分支
svn copy <trunk_URL> <branch_URL> -m "创建功能分支"
# 示例
svn copy https://svnbucket.com/user/project/trunk \
https://svnbucket.com/user/project/branches/feature-login \
-m "创建登录功能分支"
切换分支
# 切换到分支
svn switch <分支URL> [PATH]
# 切换回主干
svn switch <trunk_URL> [PATH]
# 示例
svn switch https://svnbucket.com/user/project/branches/feature-login
svn switch https://svnbucket.com/user/project/trunk
合并分支
# 合并分支到当前工作副本
svn merge <源URL> [PATH]
# 合并特定版本范围
svn merge -r <起始版本>:<结束版本> <源URL> [PATH]
# 合并到主干
svn merge https://svnbucket.com/user/project/branches/feature-login
# 示例
svn merge -r 100:150 https://svnbucket.com/user/project/branches/feature-login
删除分支
# 删除分支
svn delete <分支URL> -m "删除分支"
# 示例
svn delete https://svnbucket.com/user/project/branches/feature-login \
-m "删除已合并的登录功能分支"
🏷️ 标签管理
创建标签
# 创建标签
svn copy <源URL> <标签URL> -m "创建标签"
# 创建版本标签
svn copy <trunk_URL> <tag_URL> -m "发布版本v1.0.0"
# 示例
svn copy https://svnbucket.com/user/project/trunk \
https://svnbucket.com/user/project/tags/v1.0.0 \
-m "发布版本v1.0.0"
删除标签
# 删除标签
svn delete <标签URL> -m "删除标签"
# 示例
svn delete https://svnbucket.com/user/project/tags/v1.0.0 \
-m "删除错误标签"
📊 信息查询
查看日志
# 查看提交历史
svn log [PATH]
# 查看特定文件的日志
svn log <文件路径>
# 查看特定版本范围
svn log -r <起始版本>:<结束版本> [PATH]
# 显示详细信息
svn log -v [PATH]
# 示例
svn log
svn log src/main.js
svn log -r 100:150
svn log -v
查看信息
# 查看文件信息
svn info [PATH]
# 查看URL信息
svn info <URL>
# 示例
svn info
svn info src/main.js
svn info https://svnbucket.com/user/project/trunk
查看差异
# 查看工作副本与仓库的差异
svn diff [PATH]
# 查看特定文件的差异
svn diff <文件路径>
# 查看两个版本的差异
svn diff -r <版本1>:<版本2> [PATH]
# 查看与特定版本的差异
svn diff -r <版本号> [PATH]
# 示例
svn diff
svn diff src/main.js
svn diff -r 100:150
svn diff -r 100 src/main.js
查看文件列表
# 列出目录内容
svn list [URL]
# 显示详细信息
svn list -v [URL]
# 递归显示
svn list -R [URL]
# 示例
svn list https://svnbucket.com/user/project/trunk
svn list -v
svn list -R src/
⚠️ 冲突解决
查看冲突
# 查看冲突文件
svn status
# 查看冲突详情
svn diff
解决冲突
# 标记冲突已解决
svn resolved <文件路径>
# 解决所有冲突
svn resolved --accept working <文件路径>
svn resolved --accept theirs <文件路径>
svn resolved --accept mine <文件路径>
# 示例
svn resolved src/main.js
svn resolved --accept working src/main.js
回滚操作
# 回滚到上一个版本
svn revert <文件路径>
# 回滚整个目录
svn revert -R <目录路径>
# 回滚到特定版本
svn update -r <版本号> [PATH]
# 示例
svn revert src/main.js
svn revert -R src/
svn update -r 100
🔐 权限管理
锁定文件
# 锁定文件
svn lock <文件路径> -m "锁定原因"
# 强制锁定
svn lock --force <文件路径> -m "强制锁定"
# 示例
svn lock src/main.js -m "正在修改核心功能"
解锁文件
# 解锁文件
svn unlock <文件路径>
# 强制解锁
svn unlock --force <文件路径>
# 示例
svn unlock src/main.js
📝 常用参数
全局参数
# 指定版本号
-r <版本号> 或 --revision <版本号>
# 指定消息
-m <消息> 或 --message <消息>
# 递归操作
-R 或 --recursive
# 强制操作
--force
# 详细输出
-v 或 --verbose
# 安静模式
-q 或 --quiet
# 非交互模式
--non-interactive
常用选项
# 忽略外部引用
--ignore-externals
# 深度控制
--depth empty|files|immediates|infinity
# 接受选项
--accept postpone|base|working|mine-conflict|theirs-conflict|mine-full|theirs-full|edit|launch
🚀 常用组合命令
初始化项目
# 检出项目并设置忽略文件
svn checkout <URL> ./project
cd project
echo "*.log" >> .svnignore
svn propset svn:ignore -F .svnignore .
svn commit -m "设置忽略文件"
批量操作
# 添加所有新文件
svn status | grep "^?" | awk '{print $2}' | xargs svn add
# 删除所有已删除的文件
svn status | grep "^!" | awk '{print $2}' | xargs svn delete
# 提交所有更改
svn commit -m "批量更新"
备份操作
# 导出特定版本
svn export <URL>@<版本号> ./backup
# 创建完整备份
svnadmin dump <仓库路径> > backup.dump
# 恢复备份
svnadmin load <仓库路径> < backup.dump
📚 命令速查卡片
操作 | 命令 | 说明 |
---|---|---|
检出 | svn checkout <URL> |
下载代码到本地 |
更新 | svn update |
更新到最新版本 |
提交 | svn commit -m "消息" |
提交更改到服务器 |
状态 | svn status |
查看文件状态 |
添加 | svn add <文件> |
添加新文件到版本控制 |
删除 | svn delete <文件> |
删除文件 |
移动 | svn move <源> <目标> |
移动或重命名文件 |
日志 | svn log |
查看提交历史 |
差异 | svn diff |
查看文件差异 |
信息 | svn info |
查看仓库信息 |
锁定 | svn lock <文件> |
锁定文件 |
解锁 | svn unlock <文件> |
解锁文件 |
解决冲突 | svn resolved <文件> |
标记冲突已解决 |
回滚 | svn revert <文件> |
撤销本地更改 |
💡 使用技巧
1. 提交前检查
# 查看将要提交的文件
svn status
# 查看具体更改
svn diff
# 查看日志确认
svn log -r HEAD
2. 分支管理
# 创建功能分支
svn copy trunk branches/feature-name -m "创建功能分支"
# 开发完成后合并
svn merge branches/feature-name trunk
# 删除已合并分支
svn delete branches/feature-name -m "删除已合并分支"
3. 版本管理
# 创建发布标签
svn copy trunk tags/v1.0.0 -m "发布版本v1.0.0"
# 查看版本历史
svn log -v tags/
# 回滚到特定版本
svn update -r 100
这个速查表涵盖了SVN的常用命令,建议打印出来放在手边,方便快速查阅。