如何用Tortoise SVN从历史版本创建分支且不影响最新版本?
关于TortoiseSVN从历史版本创建分支的问题
操作目标
本地保留两个独立工作副本(WC),可按需切换使用。
执行的操作步骤
- 在仓库浏览器中找到目标版本,右键点击
- 选择「特定版本」单选按钮,输入版本号249
- 点击「目标路径(To Path)」旁的省略号,弹出对话框自动填充现有Trunk的URL
- 修改URL为存放该版本分支的新路径
- 点击版本旁的黑色方框,弹出版本选择对话框
- 将HEAD改为指定版本并输入249,确认后在仓库中创建了新分支
遇到的问题
创建分支后,系统提示检出新分支,但直接覆盖了本地最新版本的Trunk工作副本,全程未提示选择本地工作副本的文件夹名称。已通过备份恢复原最新Trunk,将被覆盖的版本重命名为「Trunk Version 62.5」,但担心提交「Trunk Version 62.5」或最新Trunk的修改时,会覆盖仓库中的最新版本,不清楚哪里操作出错。
操作对话框翻译(原英文对话框)
标题:复制(分支/标签)
源URL:[原Trunk的仓库地址]
从版本:特定版本(单选按钮选中),输入框内容:249(右侧带版本选择按钮)
目标URL:[你修改后的新分支仓库地址]
选项复选框:
- 复制后立即检出工作副本(已勾选)
- 仅复制变更(未勾选)
- 忽略祖先(未勾选)
检出到路径:[你本地原Trunk工作副本的文件夹路径]
底部按钮:确定、取消、帮助
问题分析与解决
错误根源
核心问题是勾选了「复制后立即检出工作副本」,且未修改「检出到路径」——这个路径默认关联了你当前打开仓库浏览器时对应的本地Trunk工作副本路径,导致SVN直接用新分支内容覆盖了原Trunk的本地文件。
正确操作流程
- 创建分支时,完成仓库端分支创建(即你步骤1-6的核心设置)后,取消勾选「复制后立即检出工作副本」,点击「确定」完成仓库内分支的创建。
- 单独执行检出操作:打开TortoiseSVN的「检出」对话框,输入新分支的仓库URL,选择全新的本地文件夹路径(不要与现有Trunk路径重复),指定版本249,完成检出即可获得独立的历史版本分支工作副本。
提交风险说明
- 你恢复后的原最新Trunk工作副本,关联的是仓库Trunk的URL,提交修改只会更新仓库的Trunk分支,不会覆盖仓库最新版本(提交前建议先执行「更新」操作,避免冲突)。
- 「Trunk Version 62.5」实际是新分支的本地工作副本,它关联的是仓库中新分支的URL,提交该副本的修改只会推送到新分支,不会影响Trunk。你可以右键该文件夹→「TortoiseSVN」→「属性」→查看「svn:entry:url」属性,确认其关联的仓库路径。
内容的提问来源于stack exchange,提问作者user3044638
相关产品推荐
相关产品推荐

