SVN 常用命令详解 @

SVN(Subversion)是一个广泛使用的版本控制系统,用于管理文件和目录的变更。以下是对常用 SVN 命令的结构化整理,涵盖代码检出、提交、更新、日志查看、分支操作等核心功能,帮助开发者更高效地使用 SVN。


一、代码检出与提交 @

  1. 检出代码
    从远程仓库检出代码到本地目录:

    svn checkout svn://xxxx.com/xxx/xxx --username xxx --password xxx save_dir
    
  2. 提交代码

    • 提交所有变更:

      svn commit -m "提交描述"
      
    • 提交指定文件或目录:

      svn commit /path/file -m "提交指定文件"
      
    • 提交特定类型文件(如所有 .js 文件):

      svn commit *.js -m "提交所有 js 文件"
      

二、更新与撤销 @

  1. 更新代码

    • 更新到最新版本:

      svn update
      
    • 更新到指定版本:

      svn update -r xxx
      
    • 仅更新特定文件:

      svn update /path/file
      
  2. 撤销修改

    • 撤销单个文件的修改:

      svn revert file.go
      
    • 递归撤销整个目录的修改:

      svn revert -R /path/dir
      

三、文件操作 @

  1. 添加文件

    • 添加指定文件或目录:

      svn add /path/file
      
    • 添加特定类型文件(如所有 .go 文件):

      svn add *.go
      
  2. 删除文件

    • 从版本控制中移除文件:

      svn delete /path/file
      
    • 移除版本控制但保留本地文件:

      svn delete /path/file --keep-local
      

四、查看日志与差异 @

  1. 查看提交日志

    • 查看所有日志:

      svn log
      
    • 查看指定文件或目录的日志:

      svn log /path/file
      
    • 查看日志并显示变动的文件列表:

      svn log -v
      
    • 限制日志条数(如最新 5 条):

      svn log -l 5
      
  2. 查看差异

    • 查看本地修改:

      svn diff
      
    • 查看指定文件的差异:

      svn diff /path/file
      
    • 比较本地文件与指定版本的差异:

      svn diff /path/file -r xxx
      
    • 比较两个版本的差异:

      svn diff /path/file -r 1:2
      

五、忽略文件配置 @

  1. 设置忽略规则

    • 忽略当前目录下所有 .go 文件:

      svn propset svn:ignore "*.go" .
      
    • 递归忽略所有 .go 文件:

      svn propset svn:global-ignores "*.go" .
      
    • 从文件读取忽略规则:

      svn propset svn:ignore -F filename.txt .
      
  2. 管理忽略属性

    • 编辑忽略属性:

      svn propedit svn:ignore .
      
    • 查看当前目录属性:

      svn proplist . -v
      
    • 删除忽略设置:

      svn propdel svn:ignore .
      

六、状态与清理 @

  1. 查看状态

    • 查看所有文件状态:

      svn status
      
    • 查看指定文件状态:

      svn status /path/file
      
  2. 清理工作副本

    svn cleanup
    

七、信息查看与文件列表 @

  1. 查看仓库信息

    svn info
    
  2. 查看文件列表

    • 查看当前目录文件列表:

      svn ls
      
    • 查看指定版本的文件列表:

      svn ls -r 版本号
      
  3. 查看文件内容

    svn cat file.go  # 可加 -r 指定版本
    
  4. 查看文件修改记录

    svn blame file
    

八、分支与合并 @

  1. 创建分支

    svn cp -m "描述内容" http://xxx.com/xxx/trunk http://xxx.com/xxx/branches/xx1.0
    
  2. 合并操作

    • 合并主干最新代码到分支:

      cd branches/xxx1.0
      svn merge http://xxx.com/xxx/trunk
      
    • 将分支合并回主干:

      svn merge --reintegrate http://xxx.com/xxx/branches/xxx1.0
      
  3. 切换分支

    svn switch svn://xxx/xxx/xxx1.0
    
  4. 删除分支

    svn rm http://xxx.com/xxx/branches/xxx1.0
    

九、其他实用命令 @

  1. 查看未版本控制的文件

    svn status | grep ^?
    
  2. 批量添加未版本控制的文件

    svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add
    
  3. 重定向仓库地址

    svn switch --relocate 原SVN地址 新SVN地址
    

通过以上分类和详细说明,可以更清晰地理解和使用 SVN 的常用命令,提升版本控制效率。

参考: https://svnbucket.com