iOS开发基础48-SVN介绍一
Subversion(SVN)是一种流行的版本控制系统,广泛用于版本管理、代码管理和团队协作。
1. 将文件 Checkout 到本地目录
命令:
svn checkout path
# 简写:svn co
示例:
svn checkout svn://192.168.1.1/pro/domain
解释:
svn checkout
命令将服务器上的指定目录检出到本地目录。该命令会下载所有文件及其历史记录到本地,使你能够开始进行版本控制操作。
底层逻辑:
该命令会从服务器下载项目存储库,并创建一个工作副本。本地副本包括一个隐藏的 .svn
目录,用于存储本地副本的元数据和管理信息。
2. 往版本库中添加新的文件
命令:
svn add file
示例:
svn add test.php
svn add *.php
解释:
svn add
命令用于将未受版本控制的文件添加到版本库中。添加之后,可以进行提交操作,真正将文件写入版本库。
底层逻辑:
svn add
不会立即将文件上传到服务器,而是标记这些文件,以便在下次提交时包括它们。
3. 将改动的文件提交到版本库
命令:
svn commit -m "LogMessage"
# 简写:svn ci
示例:
svn commit -m "add test file for my test" test.php
解释:
svn commit
命令用于提交工作副本中的更改到版本库。-m
选项用于添加提交说明。
底层逻辑:
该命令会将本地更改上传到版本库,并为这些更改分配一个新的版本号。这一步是将本地变更同步到版本库的关键步骤。
4. 加锁/解锁
命令:
svn lock -m "LockMessage" [--force] PATH
svn unlock PATH
示例:
svn lock -m "lock test file" test.php
svn unlock test.php
解释:
svn lock
和 svn unlock
用于加锁和解锁文件。加锁使文件变为只读状态,以防止其他用户修改。
底层逻辑:
锁定操作会更新版本库中的锁定元数据,使得其他尝试修改此文件的操作被拒绝,直到解锁为止。
5. 更新到某个版本
命令:
svn update [-r版本号] [路径]
# 简写:svn up
示例:
svn update -r 200 test.php
svn update test.php
解释:
svn update
命令用于更新工作副本到最新版本或指定版本。
底层逻辑:
该命令会将版本库中的更改同步到本地副本。如果版本库中的某个文件发生了改动,svn update
会将这些改动合并到本地文件。
6. 查看文件或者目录状态
命令:
svn status [路径]
# 简写:svn st
示例:
svn status
svn status -v
解释:
svn status
命令用于查看工作副本中文件或目录的状态。
底层逻辑:
该命令会比较工作副本与版本库的差异,并显示变更信息。由于 .svn 目录中存储了本地副本的元数据,因此这个操作不需要访问网络。
7. 删除文件
命令:
svn delete PATH -m "delete test file"
# 简写:svn del, svn remove, svn rm
示例:
svn delete test.php -m "delete test file"
解释:
svn delete
命令用于从版本库中删除文件或目录。
底层逻辑:
删除操作会将目标文件标记为删除,但不会立即移除。在下次提交操作中,文件会被真正从版本库中删除。
8. 查看日志
命令:
svn log [路径]
示例:
svn log test.php
解释:
svn log
命令用于查看文件或目录的所有修改记录,包括每次提交的版本号和注释。
底层逻辑:
版本库中存储了所有提交的历史记录,svn log
命令访问并显示这些历史记录。
9. 查看文件详细信息
命令:
svn info [路径]
示例:
svn info test.php
解释:
svn info
命令用于显示文件或目录的详细元数据信息,包括 URL、版本号和最近一次修改等。
底层逻辑:
该命令访问 .svn 目录中存储的元数据,并显示相关信息。
10. 比较差异
命令:
svn diff [路径]
# 简写:svn di
示例:
svn diff test.php
svn diff -r 200:201 test.php
解释:
svn diff
命令用于比较工作副本和版本库之间的差异,或者比较不同版本之间的差异。
底层逻辑:
该命令会读取并比较本地文件和版本库中的文件,将不同之处显示出来。
11. 将两个版本之间的差异合并到当前文件
命令:
svn merge -r 版本号1:版本号2 路径
示例:
svn merge -r 200:205 test.php
解释:
svn merge
用于将两个版本之间的差异合并到当前文件。这通常用于合并分支上的更改。
底层逻辑:
该命令会计算两个版本之间的差异,并将这些差异应用到当前工作副本中。如果产生冲突,用户需要手动解决。
12. SVN 帮助
命令:
svn help
svn help [命令]
解释:
svn help
提供 Subversion 的帮助信息和命令详解。使用特定命令参数可以获取该命令的详细用法。
13. 版本库下的文件和目录列表
命令:
svn list [路径]
# 简写:svn ls
解释:
svn list
用于列出版本库中特定目录下的所有文件和目录。
底层逻辑:
该命令会访问版本库,获取并显示指定路径下的所有内容。
14. 创建纳入版本控制下的新目录
命令:
svn mkdir 路径
解释:
svn mkdir
用于在版本库中创建新目录。
底层逻辑:
此命令不仅会在文件系统上创建目录,还会将新创建的目录纳入版本控制范围。
15. 恢复本地修改
命令:
svn revert [路径]
解释:
svn revert
用于恢复原始未改变的工作副本文件。
底层逻辑:
该命令会将本地副本恢复到上次更新或提交的状态,不访问版本库。
16. 代码库 URL 变更
命令:
svn switch URL
svn switch --relocate FROM TO [路径]
解释:
svn switch
用于更新工作副本至不同的 URL。这用于在同一版本库内切换分支或标签。
底层逻辑:
该命令会更新工作副本的元数据,使其指向一个新的 URL。
17. 解决冲突
命令:
svn resolved [路径]
解释:
svn resolved
用于移除工作副本的冲突状态。
底层逻辑:
该命令不会自动解决冲突,仅会清除冲突标记,使得文件可以重新提交。
18. 输出指定文件或 URL 的内容
命令:
svn cat 目标 [@版本]
解释:
svn cat
用于输出指定文件或 URL 的内容。
底层逻辑:
该命令会读取并输出版本库中指定文件的内容,可以选择特定版本进行输出。