SVN学习笔记
一、SVN简介
- SVN(Subversion) 是一种版本控制系统,用于跟踪文件和目录的变更历史。它允许团队成员协作开发项目,管理代码版本,记录变更历史,并在必要时恢复到旧版本。
- SVN采用集中式版本控制模型,所有文件的版本信息存储在服务器上的中央仓库(Repository)中,用户通过检出(Checkout)操作获取代码副本,在本地进行修改后,再提交(Commit)到仓库。
二、SVN基本概念
- Repository(仓库)
- 存储项目的所有版本信息,包括文件内容、变更历史、用户提交信息等。它是SVN的核心,类似于一个数据库,记录了项目从创建到当前的所有变化。
- Working Copy(工作副本)
- 用户从仓库检出的代码副本,用于在本地进行开发。工作副本包含文件的当前版本以及一些元数据(如文件的版本号、是否被修改等)。用户可以在工作副本中自由修改文件,然后将修改提交回仓库。
- Revision(版本号)
- 每次提交到仓库的操作都会产生一个新的版本号,版本号是递增的整数,用于唯一标识仓库的状态。通过版本号,用户可以方便地查看特定版本的文件内容、变更历史等。
- 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会提示冲突。
- 解决方法:
- 手动打开冲突文件,查看冲突标记(
<<<<<<<、=======、>>>>>>>),根据实际情况选择保留或修改内容。
- 使用
svn resolved [文件名]标记冲突已解决。
- 提交修改。
posted @
2025-03-17 17:01
菜狗非狗
阅读(
63)
评论()
收藏
举报