SVN未忽略指定文件问题:如何永久忽略.classpath与.project?
解决SVN无法永久忽略.classpath和.project文件的问题
我来帮你搞定这个头疼的问题!这种情况十有八九是因为这两个文件已经被SVN纳入版本追踪列表了——单纯添加忽略规则是没用的,得按下面的步骤一步步来:
步骤1:先取消对这两个文件的SVN追踪(本地文件保留)
首先要把它们从SVN的追踪名单里踢出去,但别删本地文件,用这个命令就行:
svn delete --keep-local .classpath .project
--keep-local参数是关键,它会让SVN停止追踪这两个文件,但本地的.classpath和.project会完好保留,不会被删除。
步骤2:设置项目级忽略规则(仅对当前项目生效)
接下来给当前项目添加忽略规则,确保后续这两个文件不会被SVN再盯上:
- 命令行方式:进入项目根目录,直接执行:
或者你可以先建一个svn propset svn:ignore ".classpath\n.project" .ignore.txt文件,里面每行写一个要忽略的文件名:
然后执行:.classpath .projectsvn propset svn:ignore -F ignore.txt . - 图形客户端方式(比如TortoiseSVN):右键项目根目录 → 选择「TortoiseSVN」→「Properties」→ 点击「New」选择「svn:ignore」→ 在弹出的编辑框里输入
.classpath和.project(每行一个)→ 保存即可。
步骤3:(可选)设置全局忽略规则(对所有SVN项目生效)
如果你希望所有SVN项目都自动忽略这两个文件,可以配置全局忽略:
- 命令行/手动编辑配置:
- Linux/macOS:打开
~/.subversion/config文件 - Windows:打开
C:\Users\<你的用户名>\AppData\Roaming\Subversion\config文件
找到global-ignores那一行,去掉前面的#注释,然后在后面加上.classpath .project,比如:
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store .classpath .project - Linux/macOS:打开
- TortoiseSVN图形设置:打开TortoiseSVN的「Settings」→ 「General」→ 「Global ignore pattern」,在输入框里添加
.classpath .project即可。
步骤4:提交变更到仓库
最后别忘了把刚才的修改提交到SVN仓库,这样其他协作的同事也能同步这个忽略规则:
svn commit -m "Stop tracking .classpath/.project and set ignore rules"
注意事项
如果这两个文件之前已经被提交到过仓库,取消追踪后仓库里的历史版本还会保留,但后续的提交不会再包含这两个文件了,完全不影响本地开发使用。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

