欢迎光临
我们一直在努力

工作中 SVN 完整使用指南(实战版,日常开发全覆盖)

目录

一、前置:两种使用方式

二、第一步:首次拉取代码(检出 Checkout)

1. 图形端(TortoiseSVN)

2. 对应命令行

三、日常开发核心 4 步(90% 工作只用到这几步)

1. 拉取最新代码(Update 更新)

图形端

命令行

2. 编写 / 修改代码

3. 查看本地修改(Status 状态)

图形端

命令行

4. 提交代码(Commit 提交)

图形端

命令行

四、新增 / 删除 / 重命名 文件(标准操作)

1. 新增文件

2. 删除文件

3. 重命名 / 移动文件

五、重中之重:解决代码冲突(Conflict)

1. 冲突表现

2. 冲突文件说明

3. 三种解决方式(按场景选)

方式 1:手动合并(最常用、推荐)

方式 2:使用我的版本(丢弃服务器代码)

方式 3:使用服务器版本(丢弃本地改动)

六、回滚代码(撤销错误提交 / 本地改动)

场景 1:本地改坏了,未提交,恢复原样

图形端

命令行

场景 2:代码已经提交到服务器,需要回滚版本

七、分支使用(团队迭代 / 上线必备)

1. 创建分支(从主干拉分支开发)

2. 分支合并(功能开发完,合并回主干)

3. 创建 Tag(上线归档)

八、工作必备规范(团队协作红线)

九、常见问题 & 踩坑总结

十、常用命令行速查表(收藏)


SVN(Subversion)是集中式版本控制工具,代码统一存放在中央服务器,团队所有人拉取、提交、更新代码,企业传统项目、内网项目使用极多。下面分环境、核心流程、常用命令 / 客户端、冲突解决、分支、规范、踩坑全流程讲解,适配日常团队协作。

一、前置:两种使用方式

工作中主要分两类,任选其一即可:

  • 图形客户端(新手 / 日常推荐)
    • Windows:TortoiseSVN(最主流,右键菜单操作)
    • Mac:Cornerstone、SmartSVN、Xcode 内置 SVN
  • 命令行(服务器、自动化、运维、习惯终端) 下面同时给出 TortoiseSVN 图形操作 + 对应 Linux/Mac 命令。

  • 二、第一步:首次拉取代码(检出 Checkout)

    首次拿到项目,需要把中央仓库代码下载到本地。

    1. 图形端(TortoiseSVN)

  • 新建一个空文件夹(不要在已有代码文件夹内操作)
  • 右键 → SVN Checkout
  • 填写:
    • URL of repository:公司 SVN 仓库地址(管理员提供)
    • Checkout directory:本地存放路径
  • 输入账号密码(公司统一账户 / 个人账号),确定等待下载。
  • 检出后文件夹会带 绿色对勾 图标,代表 SVN 托管成功。

    2. 对应命令行

    # 格式:svn checkout 仓库地址 本地路径
    svn checkout https://svn.xxx.com/project /workspace/project
    # 简写
    svn co 仓库地址


    三、日常开发核心 4 步(90% 工作只用到这几步)

    开发循环:更新代码 → 改代码 → 查看修改 → 提交代码

    1. 拉取最新代码(Update 更新)

    多人协作,改代码前必须先更新,避免本地代码和服务器脱节。

    原则:先更新,后开发

    图形端

    右键项目文件夹 → SVN Update 自动拉取服务器最新代码,提示更新文件数量。

    命令行

    svn update
    # 简写 svn up

    2. 编写 / 修改代码

    正常开发、增删改文件、写功能。

    • 新增文件:图标变为 蓝色加号
    • 修改文件:图标变为 红色感叹号
    • 删除文件:图标变为 红色叉号

    3. 查看本地修改(Status 状态)

    提交前建议先检查:改了哪些文件、有没有误改。

    图形端

    右键 → TortoiseSVN → Check for modifications 会列出:已修改、新增、删除、未纳入版本的文件。

    命令行

    svn status
    # 简写 svn st

    状态标识含义(高频):

    • M:文件被修改
    • A:文件新增(还未提交到服务器)
    • D:文件删除
    • ?:未被 SVN 托管的新文件(不会被提交)

    4. 提交代码(Commit 提交)

    开发完成、自测通过后,把本地改动上传到中央仓库。

    图形端
  • 右键 → SVN Commit
  • 必填:填写提交备注(规范见下文)
  • 勾选要提交的文件(默认全选)
  • 确定,输入账号密码完成提交。
  • 命令行

    # -m 后面跟提交备注(必须写)
    svn commit -m "完成用户登录功能,修复验证码bug"
    # 简写
    svn ci -m "备注"

    重要规则:严禁空备注提交,团队无法追溯改动。


    四、新增 / 删除 / 重命名 文件(标准操作)

    不要直接在系统里手动删 / 重命名文件,会导致 SVN 状态异常。

    1. 新增文件

  • 本地新建文件 / 文件夹
  • 右键文件 → TortoiseSVN → Add(加入版本控制)
  • 再执行 Commit 提交到服务器
  • 命令行:

    svn add 文件名
    svn ci -m "新增配置文件"

    2. 删除文件

  • 右键文件 → TortoiseSVN → Delete
  • 提交生效
  • 命令行:

    svn del 文件名
    svn ci -m "删除废弃工具类"

    3. 重命名 / 移动文件

    右键 → TortoiseSVN → Rename,改完直接提交。 命令行:

    svn mv 旧名 新名


    五、重中之重:解决代码冲突(Conflict)

    多人修改同一个文件的同一行代码,更新 / 提交时就会产生冲突,工作最常见问题。

    1. 冲突表现

    • 图形端:文件图标变成 黄色三角感叹号
    • 命令行:提示 C 文件名(C=Conflict)

    2. 冲突文件说明

    SVN 会自动生成 3 个临时文件(例:test.java 冲突):

  • test.java:合并后的混合文件(含双方代码标记)
  • test.java.r<版本号>:服务器最新版本(别人改的)
  • test.java.mine:你本地未更新的版本(你改的)
  • 打开冲突文件,会看到标记:

    <<<<<<< .mine (你的代码)
    String name = "张三";
    ======= (服务器别人的代码)
    String name = "李四";
    >>>>>>> .r1234

    3. 三种解决方式(按场景选)

    方式 1:手动合并(最常用、推荐)
  • 打开冲突文件,保留最终正确代码,删除 <<<<<< ======= >>>>>> 标记
  • 右键冲突文件 → TortoiseSVN → Resolve(标记冲突已解决)
  • 正常 Commit 提交
  • 方式 2:使用我的版本(丢弃服务器代码)

    右键 → TortoiseSVN → Resolve → Resolve using my version 适合:确定自己代码是对的,覆盖别人改动。

    方式 3:使用服务器版本(丢弃本地改动)

    右键 → Resolve using theirs version 适合:本地改错,直接拉取线上版本。

    经验:冲突优先沟通,和修改同文件的同事对齐逻辑,再合并,不要盲目覆盖。


    六、回滚代码(撤销错误提交 / 本地改动)

    分两种场景:撤销本地未提交改动、回滚已提交到服务器的代码。

    场景 1:本地改坏了,未提交,恢复原样

    图形端

    右键项目 → TortoiseSVN → Revert,勾选文件,确定即可恢复成服务器版本。

    命令行

    svn revert 文件名
    # 恢复整个目录所有改动
    svn revert . -R

    场景 2:代码已经提交到服务器,需要回滚版本

    假设错误提交版本号是 100,要回到 99 版本:

  • 右键 → TortoiseSVN → Show Log(查看提交日志)
  • 找到正常版本 99 → 右键 → Revert changes from this revision
  • 确认后,本地代码回到旧版本,再 Commit 提交(生成新版本记录)
  • 命令行回滚指定版本:

    # 回退到 99 版本
    svn merge -r 100:99 .
    svn ci -m "回滚版本100,修复线上bug"

    SVN 是增量记录,回滚不会删除历史版本,所有记录都可追溯。


    七、分支使用(团队迭代 / 上线必备)

    企业常用分支模型:

    • Trunk(主干):线上正式代码、稳定版本
    • Branches(分支):开发新功能、迭代版本、测试版本
    • Tags(标签):版本快照(上线打版本、归档,只读不修改)

    1. 创建分支(从主干拉分支开发)

    图形端:

  • 右键主干目录 → TortoiseSVN → Branch/tag
  • To URL 填写分支地址 …/branches/迭代V2.0
  • 备注:创建 V2.0 开发分支,确定。
  • 命令行:

    svn copy 主干地址 分支地址 -m "创建V2.0开发分支"

    2. 分支合并(功能开发完,合并回主干)

    分支测试通过后,把分支代码合并到主干:

  • 切换到 主干目录
  • 右键 → TortoiseSVN → Merge
  • 选择分支地址,执行合并
  • 处理冲突 → 提交主干
  • 3. 创建 Tag(上线归档)

    逻辑同创建分支,地址放到 /tags/版本号,Tag 原则:只用来存档,禁止修改提交。


    八、工作必备规范(团队协作红线)

  • 每日开发前必 Update,保证本地代码最新。
  • 提交必须写清晰备注,格式建议:功能/模块 + 内容 例:订单模块-新增退款接口、修复首页样式错乱
  • 禁止提交本地配置、临时文件、日志、IDE 配置 推荐配置 SVN 忽略列表:.idea、target、logs、*.iml、node_modules
  • 单次提交粒度要小:一个功能 / 一个 bug 一次提交,不要一次性提交几十个文件。
  • 上线版本优先打 Tag,方便后续回滚、查历史版本。
  • 多人同文件开发,尽量提前沟通,减少大面积冲突。

  • 九、常见问题 & 踩坑总结

  • 图标不显示 重启电脑 / 重装 TortoiseSVN,或在设置里开启图标覆盖。
  • 提示认证失败 账号密码错误、权限不足,找管理员开通权限。
  • 文件被锁定(Lock) 部分项目开启文件锁,右键 Release Lock 解锁,或联系持有者解锁。
  • 误删文件 查看日志,找到删除前版本,单独恢复该文件。
  • 大量未托管文件(?) 确认是临时 / 编译文件,添加到 SVN Ignore 忽略,不要提交。

  • 十、常用命令行速查表(收藏)

    svn co # 检出代码
    svn up # 更新代码
    svn st # 查看状态
    svn ci # 提交代码
    svn add # 新增文件
    svn del # 删除文件
    svn mv # 移动/重命名
    svn log # 查看提交日志
    svn revert # 撤销本地改动
    svn merge # 合并分支/版本
    svn info # 查看当前仓库地址、版本

    赞(0)
    未经允许不得转载:171主机测评 » 工作中 SVN 完整使用指南(实战版,日常开发全覆盖)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址