TortoiseSVN 完整教程:从入门到精通
目录
-
(图片来源网络,侵删)- 1 什么是 SVN?
- 2 什么是 TortoiseSVN?
- 3 安装 TortoiseSVN
- 4 配置用户名
- 5 获取一个 SVN 仓库地址
-
- 1 检出 - 第一次获取代码
- 2 更新 - 获取最新代码
- 3 添加 - 将新文件纳入版本控制
- 4 修改与提交 - 保存你的更改
- 5 查看差异 - 对比修改
- 6 显示日志 - 查看历史记录
-
- 1 解决冲突 - 当你和别人修改了同一处代码
- 2 还原 - 撤销本地修改
- 3 删除 - 从版本控制中移除文件
- 4 重命名/移动 - 修改文件名或移动位置
- 5 创建分支与合并 - 实现并行开发
-
- 1 提交信息规范
- 2 提交前务必更新
- 3 善用 “显示日志”
- 4 忽略文件
第一部分:准备工作
1 什么是 SVN?
SVN 是 Subversion 的缩写,它是一个开源的版本控制系统,你可以把它想象成一个“超级的文件备份系统”,但它远不止于此。

- 版本管理:记录每一次文件的修改,你可以随时查看、恢复到任何一个历史版本。
- 协作开发:多人可以同时开发一个项目,SVN 会管理每个人的修改,确保代码不会丢失或被意外覆盖。
- 历史追踪:每次提交代码时,都需要填写提交信息,清晰地记录了“谁在什么时间做了什么修改”。
2 什么是 TortoiseSVN?
TortoiseSVN 的中文意思是“乌龟 SVN”,它不是一个独立的软件,而是一个 Windows 的 Shell 扩展,这意味着它不提供自己的窗口,而是通过右键菜单来操作。
- 优点:
- 直观易用:直接在文件资源管理器中右键即可完成所有操作。
- 无缝集成:与 Windows 系统完美融合,无需切换到其他软件。
- 可视化:用不同颜色的小图标(绿色、红色、蓝色等)直观地显示文件和文件夹的状态。
3 安装 TortoiseSVN
- 访问 TortoiseSVN 官方网站:https://tortoisesvn.net/
- 下载最新版本的 "TortoiseSVN 64-bit" 或 "32-bit"(根据你的系统选择)。
- 运行安装程序。重要:在安装过程中,会提示你安装 "Command line client tools",如果你需要在命令行中使用 SVN 命令(例如在 CI/CD 脚本中),请务必勾选它。
- 安装完成后,需要重启电脑才能使右键菜单生效。
4 配置用户名
在提交代码时,SVN 需要知道是谁提交的,你需要配置一个全局的用户名和邮箱。
- 在桌面空白处点击右键,选择
TortoiseSVN->Settings...。 - 在弹出的窗口中,找到左侧的
Saved Data->Authentication data。 - 点击右边的
Clear按钮,清除可能存在的旧配置(如果有的话)。 - 然后回到左侧,选择
General->Edit。 - 在
Username和Password字段中填入你的 SVN 账号信息。注意:密码可以不填,每次提交时再输入,更安全,但用户名是必须的。
5 获取一个 SVN 仓库地址
你需要一个 SVN 仓库来练习,通常这个地址由你的团队或管理员提供,它看起来像这样:
http://svn.example.com/project/trunkhttps://svn.yourcompany.com/financesvn+ssh://user@svn.example.com/project
第二部分:核心操作
假设你已经准备好了一个 SVN 仓库地址。

1 检出 - 第一次获取代码
“检出”是指将 SVN 仓库中的代码完整地下载到你的本地电脑上。
- 在你的电脑上创建一个空的文件夹,用于存放项目代码(
D:\MyProject)。 - 在该文件夹的空白处点击右键,选择
SVN Checkout...。 - 在弹出的窗口中:
- URL of repository:填入你的 SVN 仓库地址。
- Checkout directory:确认本地路径是否正确。
- Revision:默认是
Head revision(最新版本),直接使用即可。
- 点击 OK,TortoiseSVN 会开始下载文件,下载完成后,文件夹中的所有文件都会显示绿色对勾,表示文件已成功从仓库检出,并且是最新、干净的状态。
2 更新 - 获取最新代码
如果你的项目是多人协作的,在你开始修改之前,或者修改过程中,都应该先“更新”,以确保你本地的代码是最新版本,避免覆盖别人的修改。
- 在项目文件夹的空白处点击右键。
- 选择
SVN Update。 - TortoiseSVN 会连接到服务器,下载自你上次更新以来的所有更改。
- 更新完成后,文件图标会相应变化(别人修改的文件会变成黄色感叹号)。
3 添加 - 将新文件纳入版本控制
当你创建了新的文件或文件夹,并且希望 SVN 来管理它们时,就需要执行“添加”操作。
- 在文件资源管理器中,像平常一样创建新文件或新文件夹。
- 在新创建的文件/文件夹上点击右键。
- 选择
TortoiseSVN->Add...。 - 在弹出的窗口中,选择要添加的文件,然后点击 OK。
- 文件图标会变成蓝色加号,表示这个文件已经被标记为“添加”,但还未真正提交到服务器。
4 修改与提交 - 保存你的更改
这是最核心的日常操作流程。
- 修改文件:像平常一样打开并编辑你的文件。
- 查看修改:修改后,你会发现文件的图标变成了红色感叹号,表示该文件被修改了。
- 提交更改:
- 在项目文件夹的空白处点击右键,选择
SVN Commit...。 - 在弹出的窗口中,上半部分会显示所有被修改或被添加的文件。
- 在下方的 "Log message" 文本框中,清晰、简洁地描述你这次修改的内容。"修复了登录按钮无法点击的 Bug"。
- 确认无误后,点击 OK。
- 在项目文件夹的空白处点击右键,选择
- 提交成功后,文件的图标会变回绿色对勾,表示你的本地代码和服务器上的代码已经同步。
5 查看差异 - 对比修改
在提交之前,你可能想看看自己到底改了什么。
- 在项目文件夹空白处右键,选择
SVN Diff。 - TortoiseSVN 会打开一个窗口,以统一格式显示你的修改,增加的行用绿色背景,删除的行用红色背景,非常直观。
- 你也可以右键点击单个文件,选择
TortoiseSVN->Diff来查看单个文件的修改。
6 显示日志 - 查看历史记录
如果你想查看一个文件或整个项目的提交历史。
- 右键点击一个文件或项目文件夹,选择
TortoiseSVN->Show Log。 - 会弹出一个日志窗口,按时间倒序列出了所有的提交记录。
- 你可以:
- 查看详情:双击某一条记录,可以看到这次提交的具体修改内容。
- 获取旧版本:选中某条记录,右键选择
Update to revision,可以将整个项目或单个文件回滚到那个历史版本。 - 比较版本:选中两个不同的版本,右键选择
Compare revisions,可以查看这两个版本之间的所有差异。
第三部分:进阶操作
1 解决冲突 - 当你和别人修改了同一处代码
这是协作开发中最常见的问题,当两个人同时修改了同一个文件的同一行代码,并且先后提交时,后提交的人就会遇到冲突。
- 冲突发生:当你执行
SVN Update时,如果发生冲突,TortoiseSVN 会提示你,并且冲突的文件图标会变成红色感叹号和黄色感叹号叠加。 - 手动解决冲突:
- 双击冲突的文件,TortoiseSVN 会打开一个冲突解决工具。
- 工具通常会分为四个部分:
- Mine:你自己的修改。
- Theirs:别人的修改(服务器上的最新版本)。
- Merged:合并后的结果,你需要在这里手动编辑,保留正确的代码。
- Original:文件在你修改前的原始版本。
- 仔细分析,在 "Merged" 区域保留正确的代码,删除多余的代码。
- 标记冲突已解决:
- 保存 "Merged" 文件。
- 在该文件上右键,选择
TortoiseSVN->Resolve...。 - 这时,文件图标会变成黄色感叹号,表示冲突已解决,但文件还未提交。
- 提交解决:像正常一样执行
SVN Commit,将解决冲突后的版本提交到服务器。
2 还原 - 撤销本地修改
如果你不小心修改了文件,想恢复到修改前的状态(即服务器上的版本)。
- 在修改过的文件上右键。
- 选择
TortoiseSVN->Revert...。 - 在确认窗口中点击 OK,TortoiseSVN 会丢弃你所有的本地修改,文件恢复到检出时的状态,图标变回绿色对勾。
注意:Revert 操作是不可逆的,请谨慎使用。
3 删除 - 从版本控制中移除文件
如果你想从 SVN 中删除一个文件。
- 错误做法:直接在 Windows 中删除文件,这只会从你的电脑上删除,服务器上仍然存在。
- 正确做法:
- 在要删除的文件上右键。
- 选择
TortoiseSVN->Delete。 - 在提交窗口中,填写删除原因,"删除了过时的配置文件"。
- 提交后,文件会在服务器上被标记为删除,你的本地文件也会被删除。
4 重命名/移动 - 修改文件名或移动位置
SVN 能很好地处理文件和文件夹的移动和重命名,它会跟踪这种操作,而不是简单地删除再添加。
- 在要重命名/移动的文件/文件夹上右键。
- 选择
TortoiseSVN->Rename...(重命名) 或SVN Move to...(移动)。 - 输入新的名称或目标路径。
- 提交你的更改,提交信息可以写 "重命名了 README 文件为 README.md"。
5 创建分支与合并 - 实现并行开发
分支是独立于主开发线的一条平行线,通常用于:
- 开发新功能
- 修复紧急 Bug
- 进行实验性开发
主开发线通常被称为 trunk。
-
创建分支:
- 右键点击项目文件夹,选择
TortoiseSVN->Branch/Tag...。 - URL to copy from:通常是
trunk的地址。 - To path:输入分支的地址,通常是在
branches目录下,http://svn.example.com/project/branches/my-new-feature。 - 点击 OK,一个新的分支就创建好了。
- 右键点击项目文件夹,选择
-
在分支上工作:
- 像检出
trunk一样,将新创建的分支 Checkout 到你的本地。 - 在这个本地副本上进行开发、提交,这些操作不会影响
trunk。
- 像检出
-
合并分支:
- 当新功能开发完成,需要合并回
trunk时,切换到你的trunk本地工作副本。 - 右键点击项目文件夹,选择
Merge。 - Merge a range of revisions:选择此项,用于合并一个分支上的一系列提交。
- From URL:填写你的分支地址(
branches/my-new-feature)。 - From/To revision:通常选择 "Head revision"。
- 点击 Next。
- From URL:填写你的分支地址(
- Merge two different trees:选择此项,用于合并两个不同路径(如
branch和trunk)的差异。- From URL:分支地址。
- To URL:
trunk地址。 - 点击 Next。
- TortoiseSVN 会开始计算差异并尝试自动合并,解决可能出现的冲突。
- 合并完成后,检查代码是否正确,然后提交
trunk,提交信息可以是 "合并了新功能分支 my-new-feature 到 trunk"。
- 当新功能开发完成,需要合并回
第四部分:最佳实践与技巧
1 提交信息规范
一个好的提交信息能让项目历史一目了然。
- 清晰简洁:用一句话概括修改内容。
- 使用祈使句:"Fix login bug",而不是 "Fixed login bug"。
- 关联问题号:如果你们使用 JIRA、Redmine 等工具,可以在提交信息中附上问题号,"Fix login button issue #123"。
2 提交前务必更新
这是最重要的习惯! 在你点击 Commit 之前,一定要先执行 Update,这样可以:
- 及早发现冲突,而不是在提交时才发现。
- 确保你的代码是基于最新版本开发的,避免覆盖别人的劳动成果。
3 善用 “显示日志”
Show Log 是你最强大的工具之一,在不确定怎么操作时,用它来查看历史,能给你很多启发。
4 忽略文件
有些文件不需要纳入版本控制,
- 编译产生的文件(
.o,.exe,.dll,.class) - IDE 的配置文件(
.project,.settings) - 操作系统生成的文件(
Thumbs.db,Desktop.ini) - 本地的配置文件(
config.local.ini)
你可以设置 SVN 忽略这些文件。
- 在项目文件夹上右键,选择
TortoiseSVN->Add to ignore list。 - 你可以选择:
Name:忽略单个文件名。Extension:忽略某种扩展名的所有文件(*.obj)。- 打开高级设置,可以输入通配符,
build/来忽略整个 build 目录。
