svn常用命令

SVN(Subversion)同Git、Gerrit一样是一个开源的版本控制系统,用于管理文件和目录的变更历史。

0.   svn checkout

从 SVN(Subversion) 上拉取代码(checkout)

svn checkout <仓库地址> [本地目录名]

## 示例
svn checkout https://svn.example.com/project/trunk my_project


## 这会把 trunk 下的代码拉取到本地 my_project 目录中。
## svn checkout可以简写为svn co

1. svn status

svn status 用于查看 SVN 工作副本的状态,它会显示文件和目录的修改、未提交、冲突等信息。不同的状态由一个字符标识,每个状态代表文件或目录的不同情况。

1.1 常见状态码

状态码含义
?文件或目录 未受版本控制(未添加到 SVN)
A已添加 到版本控制,但未提交
C冲突(Conflict),需要手动解决
D已删除,但尚未提交
I忽略(Ignored),被 .svnignore 规则忽略
M已修改(Modified),内容发生变更但未提交
R替换(Replaced),删除并重新添加了文件
X外部定义(eXternals),表示该目录是外部引用的
~版本冲突,文件类型与 SVN 记录的不同
L锁定(Locked),本地文件被锁定,可能由于上次操作未完成
K已锁定(Kept Lock),手动保留的锁
T已切换(Switched),目录已切换到其他 SVN 路径
!丢失(Missing),文件被手动删除或丢失
E目录错误(Existed),目录状态异常
R+即将替换,表示 svn rm 后执行 svn add
S切换(Switched),路径已切换到其他分支
_无状态(通常不会显示)

1.2 仅显示已修改文件

svn status | grep '^M'

1.3 仅显示未跟踪的文件

svn status | grep '^?'

2. svn log

svn log 命令查看最近的提交日志

默认显示当前分支的提交日志,包括修订号(revision)、作者(author)、时间(date)、提交信息(message)

仅查看最近 5 条提交记录:

svn log -l 5

3. svn update

3.1 svn update

svn update 用于同步本地代码与 SVN 服务器上的最新版本,确保你的工作副本保持最新。

svn update

作用

  • 获取服务器上的最新代码,并合并到本地工作副本。
  • 不会覆盖本地未提交的修改(但可能会引发合并冲突)。
  • 如果有更新,会显示修改的文件列表(U)和最新的修订版本号。

3.2 解决冲突 

svn update 遇到文件冲突(C 状态),可以选择:

svn resolve --accept working file.txt

作用:接受工作区(本地)版本并解决冲突。

然后再次执行:

svn update

 3.3 强制清理 SVN 锁定

如果 svn update 报错,如 “Working copy locked”,可以执行:

svn cleanup
svn update

作用:清除 SVN 工作副本的锁定状态,然后更新。

如果无效可强制更新

svn update --force

3.4 L(Locked,锁定)状态的原因

  1. SVN 操作被中断
    • 例如,在 svn updatesvn commit 过程中,操作未正常完成,导致 SVN 目录锁定。
  2. SVN 冲突未解决
    • 文件或目录有冲突,但未解决,SVN 自动锁定该目录。
  3. 手动锁定(svn lock)
    • 某个用户手动锁定了该文件(但这种情况一般用 K 表示)。

3.5 svn update 状态码解析

svn update 过程中,SVN 会在每个文件前显示一个字母,表示该文件的状态。

状态码含义
UUpdated(已更新),表示 SVN 从服务器拉取了新的内容 并更新了本地文件。
AAdded(已添加),表示此文件是新文件,并被从远程添加到本地。
DDeleted(已删除),表示该文件已从 SVN 服务器删除,本地文件同步删除。
RReplaced(已替换),文件被删除后重新添加
GMerged(合并成功),表示本地有修改,但 SVN 成功合并了远程改动**(没有冲突)**。
CConflict(冲突),本地修改与远程修改冲突,需要手动解决。

4. svn commit 与svn add

在 SVN(Subversion)中,提交(commit)代码时需要确保所有的修改和新增文件都正确添加到版本控制中。

4.1 提交修改的文件

如果只修改了已有的文件(未新增文件),直接提交:

svn commit -m "提交说明"

4.2 提交修改和新增文件

SVN 不会自动提交新增文件,必须手动 svn add 之后再提交: 

svn add new_file.txt
svn commit -m "新增文件 new_file.txt"

4.3 如果新增多个文件,可以用 svn add . 添加当前目录下的所有新文件(? 状态的文件):

svn add .
svn commit -m "提交新增和修改的文件"

4.4 一次性提交所有修改和新增文件

svn add --force .
svn commit -m "提交所有修改和新增文件"

svn add --force .:递归添加所有未受控文件和目录,但不会覆盖已忽略的文件(如 .svnignore)。

4.5 仅提交指定的文件

svn commit -m "提交部分文件" file1.txt file2.txt

仅提交 file1.txtfile2.txt,不提交其他变更。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值