svn代码管理工具-学习笔记

// 本文为笔者本人在使用svn进行代码库管理时的学习笔记,仅用于本人纪录回顾,如有错误,欢迎指正

1、svn结构介绍

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,首先要从中央服务器得到最新版本。集中式版本控制系统是必须联网才能工作。

2、常见svn命令

  • 遇事不决
svn --help
  • 检出仓库
svn checkout <repository_url> 或 svn co <repository_url>
  • 查看状态
svn status 或 svn st
  • 更新当前工作副本
svn update 或 svn up
  • 提交更改
svn commit -m "commit_info"
或
svn ci -m "commit_info"
  • 添加新文件
svn add <file_name>
  • 删除文件
svn delete <file> 或 svn rm <file>
svn commit -m "commit_info"
  • 查看日志
svn log
  • 查看差异
svn diff 或 svn di

3、基本流程

(1)添加/删除/修改文件

1. 常规增删提交

svn进行文件的增删查改工作与git不同,svn没有所谓的工作区、暂存区、本地仓库等,在本地进行的修改,通过svn命令直接一键提交到远程仓库,因此要更加注意每次的提交。
基本流程如下:

## 检出仓库至本地
svn co <repository_url> .
## 在本地进行修改之后,查看状态
svn st
## ! 表示文件删除,需要svn add
## ? 表示新增文件,需要svn rm
## M 表示修改文件,不需要额外操作

## 更新文件的修改至库中
## 添加文件,之后再svn status显示为“A”
svn add <file>
## 删除文件,之后再svn status显示为“D”
svn delete <file> 或 svn rm <file>
## 提交修改
svn ci -m "commit_info"

注意:添加/删除文件需要使用add/rm,这只会将增加删除的标记打到本地副本中,之后还是要进行svn ci才会提交至远程库。文件修改不需要额外操作,直接svn ci即可
svn ci会将当前工作副本的所有文件变动一并提交!

2. 强制添加

如果新增的文件想一并add,使用一下命令,可以使当前目录下的所有新增文件一并add

svn add .

注意在add的时候,可能会提示某些文件“already under version control”,表示某些文件或目录已经在版本控制之下,不允许重复添加已经在版本控制中的文件或目录。需要使用:

svn add --force .
svn commit -m "your_comments"

强制添加,需注意自己的修改是否符合预期!

3. 批量删除
如果对库中多个文件进行了删除操作,想要将这些文件的删除批量提交到远程库中。使用以下命令:

svn status | grep '^!' | awk '{print $2}' | xargs svn delete
svn commit -m "your_comments"

即查找svn status中的“!”类型文件,提取文件路径,执行svn delete

(2)查看log(附加命令学习)

svn中的命令还会有跟多附加参数,多个参数可叠加使用,以svn log查看更新历史为例

## 查看历史,这会按顺序打印所有更新历史
svn log
## 限制打印条数(limit)
svn log -l <num>
## 查看指定文件的修改历史
svn log <file_or_dir> -l <num>
## 查看指定版本范围内的修改
svn log -r <start_revision>:<end_revision>
## 查看指定日期范围内的历史
svn log -r {<start_date>}:{<end_date>}
## 查看详细的提交日志(verbise)
svn log -v
## 查看特定的变更集
svn log -c <rev_num>
## 查看每个日志条目的差异
svn log --diff
## 查找
svn log --search "search_info"
## 多个关键字查找
svn log --search-and "search" "info"
## 以xml格式输出日志
svn log --xml
## 仅显示日志,不显示注释等(quiet)
svn log-q

注意,以上参数可以多个组合使用,从而让你更精确的找到你想要的信息,以下示例:

  1. 查看某一个文件最近的更改日志
svn log fle_name -l 3
  1. 查看某一次提交编号中更改了那些文件
svn log -c 150 -v
  1. 查看某一次提交编号中某一文件更改了什么内容
svn log -c 150 --diff file_name

其他命令也可以添加附加参数:

svn up -c 150 ## 更新到指定版本
svn status -v ## 显示详细信息
svn status -u 或 svn status --show-updates ## 显示远程仓库更新状态
svn diff -c 150 ## 比较特定的变更集
svn diff -r 100:200 或 --revision ## 指定比较的版本范围

(3)撤销修改

1. 本地撤销
本地修改的文件,想要撤销与远程仓库一致,使用:

svn revert -R path/to/your/folder

2. 撤销远程提交

要撤销 SVN 提交,可以使用 svn merge 命令将特定的提交版本回滚。但这样并不会删除掉你的提交历史,只能添加一个新的历史。因此使用svn提交时一定要谨慎。
以下是具体步骤:

  1. 查看日志,找到要撤销的版本号
svn log
  1. 合并回滚提交
svn merge -c -150
  1. 提交回滚的更改
svn commit -c "撤销版本150的修改"

svn merge 用于将一个分支的更改合并到另一个分支,或者将特定的更改应用到当前工作副本。如果合并过程中对同一部分内容都有修改,需要手动更改这里的冲突。

## 合并分支:将branch1的更改合并到当前工作副本
svn merghe ^/branches/branch1
## 合并特定版本:将r150合并到当前工作副本
svn merge -c 150
## 撤销特定的修订版本:将150的更改反向应用到当前副本
svn merge -c -150

4、附录

  1. svn status

以下是svn status时显示的文件类型含义:

  • A:添加(Added)
  • D:删除(Deleted)
  • M:修改(Modified)
  • R:替换(Replaced)
  • C:冲突(Conflict)
  • X:外部定义(External definition)
  • I:忽略(Ignored)
  • ?:未版本控制(Unversioned)
  • !:丢失(Missing)
  • ~:类型不匹配(Type mismatch)
  • L:锁定(Locked)
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ME_Felix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值