如何移除SVN分支中文件夹的externals属性同时保留已有文件
SVN移除文件夹externals属性并保留本地文件操作指南
核心注意事项
操作全程不要提前执行svn update,直到你完成文件重新入版并提交,否则SVN会自动删除原externals关联的文件夹内容。
命令行操作步骤
假设你要解除关联的externals文件夹名为target_folder,该属性配置在其父目录parent_dir上:
- 第一步先备份原externals配置和目标文件夹内容:
- 将
target_folder整体复制到SVN工作区外的临时目录做备份 - 进入
parent_dir目录,执行命令备份原externals配置:svn propget svn:externals . > externals_backup.txt
- 将
- 移除对应externals配置:
- 如果要仅移除单个文件夹的关联,执行命令编辑externals属性:
svn propedit svn:externals .
删掉配置中对应target_folder的那一行后保存退出;如果要清空所有externals配置,直接执行:svn propdel svn:externals .
- 如果要仅移除单个文件夹的关联,执行命令编辑externals属性:
- 把目标文件夹转为普通本地托管文件:
- 执行命令从SVN跟踪列表移除该文件夹但保留本地文件:
svn rm --keep-local target_folder - 用之前备份的临时目录里的
target_folder覆盖当前工作区的对应文件夹(容错操作,避免文件丢失) - 执行命令将该文件夹作为普通内容加入SVN版本控制:
svn add target_folder
- 执行命令从SVN跟踪列表移除该文件夹但保留本地文件:
- 提交变更:
svn commit -m "移除target_folder的externals关联,转为本地托管"
提交完成后再执行svn update即可,不会再出现文件被删除的问题。
TortoiseSVN图形界面操作步骤
- 备份阶段:
- 先将
target_folder整体复制到工作区外做备份 - 右键点击
parent_dir→ 「TortoiseSVN」→ 「属性」,找到svn:externals项,双击打开后把全部配置内容复制出来存为txt文件备份
- 先将
- 移除externals配置:
- 在属性编辑窗口删掉对应
target_folder的配置行,或者直接删除整个svn:externals属性,点击确认应用到当前目录,不要点击弹出的更新提示
- 在属性编辑窗口删掉对应
- 重新入版文件夹:
- 右键点击
target_folder→ 「TortoiseSVN」→ 「删除」→ 选择「保留本地文件」选项,确认操作 - 此时
target_folder变为未版本控制状态,右键点击 → 「TortoiseSVN」→ 「加入」,把整个文件夹加入版本控制
- 右键点击
- 提交变更:
右键点击parent_dir→ 「SVN提交」,填写提交日志后确认提交即可。
内容的提问来源于stack exchange,提问作者Rick N.
相关产品推荐
相关产品推荐

