二、SVN基础命令速查表
SVN基础命令速查表
📋 目录
🔧 基本操作
检出代码
# 检出整个仓库svn checkout <URL> [PATH]# 检出特定版本svn checkout <URL> [PATH] -r <版本号># 检出特定目录svn checkout <URL>/trunk [PATH]# 示例svn checkout https://svnbucket.com/user/project ./my-projectsvn checkout https://svnbucket.com/user/project/trunk ./trunk -r 100
更新代码
# 更新到最新版本svn update [PATH]# 更新到特定版本svn update [PATH] -r <版本号># 更新特定文件svn update file.txt# 示例svn updatesvn update -r 150svn 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 statussvn status -v src/
📁 文件管理
添加文件
# 添加新文件svn add <文件路径># 添加目录svn add <目录路径># 添加所有新文件svn add . --force# 示例svn add newfile.txtsvn add src/newmodule/svn add . --force
删除文件
# 删除文件svn delete <文件路径># 删除目录svn delete <目录路径># 强制删除svn delete --force <路径># 示例svn delete oldfile.txtsvn delete src/oldmodule/
移动/重命名
# 移动文件svn move <源路径> <目标路径># 重命名文件svn move oldname.txt newname.txt# 示例svn move src/old.js src/new.jssvn 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-loginsvn 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 logsvn log src/main.jssvn log -r 100:150svn log -v
查看信息
# 查看文件信息svn info [PATH]# 查看URL信息svn info <URL># 示例svn infosvn info src/main.jssvn info https://svnbucket.com/user/project/trunk
查看差异
# 查看工作副本与仓库的差异svn diff [PATH]# 查看特定文件的差异svn diff <文件路径># 查看两个版本的差异svn diff -r <版本1>:<版本2> [PATH]# 查看与特定版本的差异svn diff -r <版本号> [PATH]# 示例svn diffsvn diff src/main.jssvn diff -r 100:150svn diff -r 100 src/main.js
查看文件列表
# 列出目录内容svn list [URL]# 显示详细信息svn list -v [URL]# 递归显示svn list -R [URL]# 示例svn list https://svnbucket.com/user/project/trunksvn list -vsvn 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.jssvn resolved --accept working src/main.js
回滚操作
# 回滚到上一个版本svn revert <文件路径># 回滚整个目录svn revert -R <目录路径># 回滚到特定版本svn update -r <版本号> [PATH]# 示例svn revert src/main.jssvn 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> ./projectcd projectecho \"*.log\" >> .svnignoresvn 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
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的常用命令,建议打印出来放在手边,方便快速查阅。