当前位置: 首页 > news >正文

svn常用命令

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

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,不提交其他变更。

 

http://www.dtcms.com/a/75854.html

相关文章:

  • Spring Data JPA 参数陷阱:从 500 错误到完美解决的奇妙之旅 ✨
  • 【linux】服务器限制客户端ssh访问
  • debian12.9 kde切到x11安装搜狗输入法遇到的问题
  • JUC大揭秘:从ConcurrentHashMap到线程池,玩转Java并发编程!
  • 嵌入式编程优化技巧:do-while(0)、case范围扩展与内建函数
  • 图生视频技术的发展与展望:从技术突破到未来图景
  • Vue.js+Element UI 登录界面开发详解【附源码】
  • Cursor在内网环境配置自定义DeepSeek API
  • opencv中stitch图像融合
  • 学c++的人可以几天速通python?
  • C语言历史
  • ThreadPoolExecutor 源码分析
  • 荣耀手机卸载应用商店、快应用中心等系统自带的
  • Linux 命令:按内存使用大小排序查看 PID 的完全指南
  • Swift实战(微调多模态模型Qwen2.5 vl 7B)
  • 基于香橙派 KunpengPro学习CANN(3)——pytorch 模型迁移
  • JavaScript基础-获取元素
  • Shell脚本中的弱治简写
  • 平衡树的模拟实现
  • Golang开发
  • ROS合集(一)ROS常见命令及其用途
  • springboot多种生产打包方式教程
  • 循环神经网络中用到的概率论知识
  • YOLOv8 OBB 旋转目标检测模型详解与实践
  • 59. 螺旋矩阵 II
  • 深度洞察:特种设备作业考试的核心要点与备考策略
  • 蓝桥杯 修剪灌木
  • opencv初步学习——图像处理3
  • LeetCode BFS层序遍历树
  • 工作记录 2017-02-04