svn学习

SVN学习笔记

一、SVN简介

  • SVN(Subversion) 是一种版本控制系统,用于跟踪文件和目录的变更历史。它允许团队成员协作开发项目,管理代码版本,记录变更历史,并在必要时恢复到旧版本。
  • SVN采用集中式版本控制模型,所有文件的版本信息存储在服务器上的中央仓库(Repository)中,用户通过检出(Checkout)操作获取代码副本,在本地进行修改后,再提交(Commit)到仓库。

二、SVN基本概念

  1. Repository(仓库)
    • 存储项目的所有版本信息,包括文件内容、变更历史、用户提交信息等。它是SVN的核心,类似于一个数据库,记录了项目从创建到当前的所有变化。
  2. Working Copy(工作副本)
    • 用户从仓库检出的代码副本,用于在本地进行开发。工作副本包含文件的当前版本以及一些元数据(如文件的版本号、是否被修改等)。用户可以在工作副本中自由修改文件,然后将修改提交回仓库。
  3. Revision(版本号)
    • 每次提交到仓库的操作都会产生一个新的版本号,版本号是递增的整数,用于唯一标识仓库的状态。通过版本号,用户可以方便地查看特定版本的文件内容、变更历史等。
  4. Trunk、Branches、Tags
    • Trunk:主开发分支,通常用于存放项目的最新稳定版本,是开发的主线。
    • Branches:分支,用于开发新功能、修复缺陷或进行实验性开发。分支是从主干(Trunk)或其他分支创建的独立开发线,允许开发者在不影响主干的情况下进行开发。
    • Tags:标签,用于标记仓库的特定版本,通常用于发布版本(如v1.0、v2.0)。标签是对仓库某个版本的快照,不应在标签上进行进一步的开发。

三、SVN基本操作

(一)检出(Checkout)

  • 目的:从仓库获取最新的代码副本到本地工作区。
  • 命令
    • svn checkout [仓库URL] 从仓库获取最新的代码副本到当前目录
    • svn checkout [仓库URL] [本地目录] 如果本地目录已存在,SVN会将代码检出到该目录;如果不存在,SVN会自动创建目录。

(二)更新(Update)

  • 目的:将本地工作副本更新到仓库的最新版本,合并其他人的提交。
  • 命令svn update
  • 说明:在更新过程中,如果本地修改与仓库中的修改发生冲突,SVN会提示冲突,需要手动解决冲突后,再提交。

(三)提交(Commit)

  • 目的:将本地的修改提交到仓库,记录变更历史。
  • 命令svn commit -m "提交信息" [文件/目录]
  • 说明
    • 提交信息是必须的,用于描述本次提交的内容和目的。
    • 如果不指定文件或目录,默认提交工作副本中的所有修改。
    • 提交操作会对仓库产生新的版本号。

(四)添加文件(Add)

  • 目的:将新文件或目录添加到版本控制中。
  • 命令svn add [文件/目录]
  • 说明:添加操作只是标记文件或目录为需要版本控制,需要提交(Commit)后才会真正加入仓库。

(五)删除文件(Delete)

  • 目的:从版本控制中删除文件或目录。
  • 命令svn delete [文件/目录]
  • 说明:删除操作同样需要提交(Commit)后才会生效。

(六)查看状态(Status)

  • 目的:查看工作副本中文件或目录的状态。
  • 命令svn status
  • 说明
    • A:文件被添加。
    • M:文件被修改。
    • D:文件被删除。
    • C:文件发生冲突。
    • ?:文件未被版本控制。
    • !:文件在版本库存在,但是本地没有。

(七)查看日志(Log)

  • 目的:查看仓库的变更历史。
  • 命令
    • svn log [文件/目录] 查看文件或目录的日志。
    • svn log -v [文件/目录] 查看文件或目录的详细日志。
    • svn log -r [版本号] 查看指定版本的日志。
    • svn log -r [版本号1]:[版本号2] 查看版本号范围内的日志。
    • svn log -l [条目数] 限制日志条目数量。

(八)比较文件(diff)

  • 目的:比较工作副本中的文件与仓库中的版本之间的差异。
  • 命令
    • svn diff [文件] 比较工作副本中的文件与最新版本之间的差异。
    • svn diff -r [版本号] [文件] 比较工作副本中的文件与指定版本之间的差异。
    • svn diff [版本号1] [版本号2] [文件] 比较指定版本之间的差异。

(九)恢复旧版本(Revert)

  • 目的:将工作副本恢复到版本库中的旧版本。
  • 命令svn revert [文件]
  • 说明:恢复操作会覆盖工作副本中的文件,请谨慎使用。

四、SVN冲突解决

  • 冲突原因:当本地修改与仓库中的修改发生冲突时,SVN会提示冲突。
  • 解决方法
    1. 手动打开冲突文件,查看冲突标记(<<<<<<<=======>>>>>>>),根据实际情况选择保留或修改内容。
    2. 使用svn resolved [文件名]标记冲突已解决。
    3. 提交修改。
posted @ 2025-03-17 17:01  菜狗非狗  阅读(63)  评论(0)    收藏  举报