如何在SVN中本地忽略已纳入版本控制的子目录?
解决SVN本地忽略指定子目录(不影响服务器)的问题
针对你使用的SVN 1.6.17版本,我给你一个完全适配需求的本地忽略方案——既只在你的电脑上生效,不修改服务器配置,也不会删除目标子目录:
命令行操作步骤
- 打开终端/命令提示符,切换到目标子目录的父目录(也就是包含这个要忽略的子目录的上级目录)
- 执行以下命令,给父目录设置本地
svn:ignore属性,填入你要忽略的子目录名称:
这里的svn propset svn:ignore "你的子目录名" . --depth=empty.代表当前父目录,--depth=empty确保仅给当前目录设置属性,不会递归影响其他子目录。 - 核心注意点:绝对不要提交这个属性变更!这个属性只会保存在你的本地工作副本里,服务器不会收到任何修改,完全不会影响其他协作的同事。
TortoiseSVN图形界面操作步骤
如果你更习惯用图形界面操作,也可以按以下步骤来:
- 右键点击目标子目录的父目录,选择「TortoiseSVN → 属性」
- 在属性窗口中,点击「新建 → 忽略模式」
- 在弹出的输入框里,输入你要忽略的子目录名称,点击「确定」
- 确认属性窗口中新增了
svn:ignore属性后,点击「应用」 - 同样记得:不要提交这个父目录的属性变更,让这个忽略规则只停留在你的本地副本中。
为什么你之前的方法无效?
- 「移动到变更列表→ignore-on-commit」:这个功能只是给变更做分组标记,SVN仍然会追踪该目录下的文件修改,只是提交时默认不勾选该组,本质上还是会解析所有文件,无法提速。
- 「删除并添加到忽略列表」:这个操作会把目录从版本控制中移除,同时删除本地文件,完全不符合你保留目录的需求。
- 「global-ignores」:这个是全局的扩展名忽略规则,你不可能为了一个目录的
.c文件就全局忽略所有.c,会直接影响其他目录的正常提交,确实不可行。
验证生效情况
设置完成后,你可以执行svn status命令,或者打开TortoiseSVN的提交对话框——目标子目录里的文件应该不会再出现在变更列表中,SVN也不会再去解析这个目录的修改,提交流程会明显变快。
内容的提问来源于stack exchange,提问作者Andy Lin
相关产品推荐
相关产品推荐

