版本控制/文件管理系统SVN命令整理:提交修改更新撤销分支
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
SVN 的一些概念
repository(源代码库):源代码统一存放的地方
Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):当你已经修改了代码,你就需要Commit到repository
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN 可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict冲突,需要手动确认。
代码检出 checkout
会把 SVN 服务器上的代码下载到我们电脑上,checkout 也可以简写为 co
svn checkout svn://svnbucket.com/xxx/xxx
# 指定存储目录
svn checkout svn://svnbucket.com/xxx/xxx save-dir
# 指定用户名密码。
svn checkout svn://svnbucket.com/xxx/xxx --username xxxx --password xxx
提交代码 commit
此命令可以把我们本地的修改提交到 SVN 服务器,这样其他同事就能更新到我们的代码了。
commit 可以简写为 ci,-m 参数后面跟的是本次提交的描述内容
# 描述是必须的,但是可以填写空字符串,不指定
svn commit -m "提交描述"
# 只提交指定文件或目录
svn commit /path/to/file-or-dir -m "提交指定文件"
# 指定后缀的所有文件
svn commit *.js -m "提交所有 js 文件"
更新代码 update
执行此命令后会把其他人提交的代码从 SVN 服务器更新到我们自己电脑上,update 也可以简写为 up
# 更新到最新
svn update
# 更新到指定版本的代码。特别是最新版本代码有问题时,我们可以用这个命令回到之前的版本
svn update -r xxx
# 仅更新指定文件或者目录
svn up /path/to/file-or-dir
添加文件 add
新建的文件,我们需要用 add 命令把它们加入 SVN 的版本管理,然后我们才可以提交它。
注意:添加后还需要进行提交喔。
# 添加指定文件或目录
svn add /path/to/file-or-dir
# 添加当前目录下所有 php 文件
svn add *.php
删除文件 delete
此命令会从 SVN 移除版本控制,移除后你需要提交一下
svn delete /path/to/file-or-dir
# 删除版本控制,但是本地依旧保留文件
svn delete /path/to/file-or-dir --keep-local
查看日志 log
# 查看当前目录的日志
svn log
# 查看指定文件或目录的提交日志
svn log /path/to/file-or-dir
# 查看日志,并且输出变动的文件列表
svn log -v
# 限定只输出最新的 5 条日志
svn log -l 5
查看变动 diff
# 查看当前工作区的改动
svn diff
# 查看指定文件或目录的改动
svn diff /path/to/file-or-dir
# 本地文件跟指定版本号比较差异
svn diff /path/to/file-or-dir -r xxx
# 指定版本号比较差异
svn diff /path/to/file-or-dir -r 1:2
撤销修改 revert
# 撤销文件的本地修改
svn revert test.php
# 递归撤销目录中的本地修改
svn revert -R /path/to/dir
添加忽略 ignore
SVN 的忽略是通过设置目录的属性 prop 来实现的,添加后会有一个目录属性变动的修改需要提交,记得要提交一下喔,这样其他人也有了这个忽略配置。
# 忽略所有 log 文件。注意最后有个点号,表示在当前目录设置忽略属性。
svn propset svn:ignore "*.log" .
# 递归忽略 global-ignores
svn propset svn:global-ignores "*.log" .
# 从文件读取忽略规则,一行一个规则。
svn propset svn:ignore -F filename.txt .
# 打开编辑器修改忽略属性
svn propedit svn:ignore .
# 查看当前目录的属性配置
svn proplist . -v
# 删除当前目录的忽略设置
svn propdel svn:ignore .
忽略仅对还未添加到版本库的文件生效,已经在版本库里的文件,添加忽略后是不会自动删除的也不会忽略,需要手动 delete 命令删除下才行。
TortoiseSVN 添加忽略会更加简单,也会自动执行删除命令。
查看状态 status
任何时候,你可以用下面的命令查看当前工作目录的 SVN 状态喔,会列出来哪些文件有变动。
svn status
svn status /path/to/file-or-dir
清理 cleanup
这个命令我们经常在 SVN 出现报错时可以执行一下,这样就会清理掉本地的一些缓存
svn cleanup
查看信息 info
svn info
查看文件列表 ls
svn ls
# 指定版本号
svn ls -r 100
查看文件内容
# 查看指定版本的文件内容,不加版本号就是查看最新版本的
svn cat test.py -r 2
查看 blame
显示文件的每一行最后是谁修改的(出了BUG,经常用来查这段代码是谁改的)
svn blame filename.php
地址重定向
如果你的 SVN 地址变了,不需要重新 checkout 代码,只需要这样重定向一下就可以了。
svn switch --relocate 原 SVN 地址 新 SVN 地址
分支操作
# 创建分支,从主干 trunk 创建一个分支保存到 branches/online1.0
svn cp -m "描述内容" http://svnbucket.com/repos/trunk http://svnbucket.com/repos/branches/online1.0
# 合并主干上的最新代码到分支上
cd branches/online1.0
svn merge http://svnbucket.com/repos/trunk
# 分支合并到主干
svn merge --reintegrate http://svnbucket.com/repos/branches/online1.0
# 切换分支
svn switch svn://svnbucket.com/test/branches/online1.0
# 删除分支
svn rm http://svnbucket.com/repos/branches/online1.0
帮助命令
# 查看SVN帮助
svn help
# 查看指定命令的帮助信息
svn help commit
版本控制/文件管理系统SVN命令整理:提交修改更新撤销分支相关推荐
- 懒人技能,svn命令行提交新增的文件
命令行执行svn ci提交的时候,如果是新增的文件,不会被提交. 作为一个懒人,是不能接受手动add这种操作的. 上命令 svn add . --no-ignore --force svn ci -m ...
- linux 命令整理(持续更新)
为什么80%的码农都做不了架构师?>>> C cat zdd 浏览文件zdd的内容 cat zdd1 zdd2 浏览多个文件的内容 cat -n zdd浏览文件zdd的内容并显 ...
- Linux下SVN命令一次性提交多个目录及子目录
svn st|awk '{print $2}'|xargs svn add. 乍看之下觉得更加精炼,仔细看下就会发现这个脚本没有区分文件状态.所以完善了以下这个脚本: svn st | awk '{i ...
- svn 服务器忽略文件夹,SVN忽略不提交文件夹
层次分析模型(AHP)及其MATLAB实现 今天用将近一天的时间学习了层次分析模型(AHP),主要参考了一份pdf,这个网站,和暨南大学章老师的课件,现写出一些自己总结的要点. 一.层次分析法的基本步 ...
- Linux 各种压缩类型文件 解压命令 整理 tar.bz2 tar.gz tgz等等
*.tar 使用 tar –xvf 解压 *.tar.gz和*.tgz 使用 tar –zxvf 解压 *.gz 使用 gzip -d或者gunzip 解压 *.bz2 使用 bzip2 -d 或者 ...
- Git 常用命令整理(持续更新)
#配置 git config --global user.name "Your Name" git config --global user.email "email@e ...
- 【原创--学习整理】BAT和DOS命令整理,持续更新
1 关于BAT基于的DOS命令的分类 1.1我的分类 我现在作为一个初学者,只能总结现在的粗浅体验,方便分类学习,以后慢慢完善 DOS命令可以分为 内部命令 DOS语法内部的一些特殊符号,如@ 如:: ...
- git detached HEAD 修改后如何提交修改到其他分支
有次工作中git切换分支时,不小心前面加了origin/,但是像往常一样没有注意,直接在新分支上修改代码,等到要提交时给出的提示是git detached HEAD,还说切换分支之前请确保代码不会丢失 ...
- 【Linux操作】常用命令整理(持续更新中...)
目录 目录 一.解压缩 1..tar 2..tar.gz 3..tar.bz2 4.分卷解压缩 二.Linux下载torrent种子 三.查看并杀死进程 查看进程 杀死某进程 杀死全部python进程 ...
- matlab之常用命令整理(持续更新中...)
一些自己工作中遇到的问题. 希望对大家也有帮助. 信号处理 alignsignals 求两个信号的delay, 并且对齐信号 buffer 可以把信号切分成不同segment组成矩阵 dsp.Samp ...
最新文章
- java中wait方法使用实例_java中wait、notify和notifyAll的概念用法和例子?
- linux信号检查参数相同,linux信号函数
- hackme_Login As Admin 0
- 【推荐】JS面象对象编程视频教程
- Boost:can_require的使用测试程序
- JEPaas【按钮隐藏】根据单据状态值决定【添加明细】【删除】按钮的隐藏和显示
- 类似mysqlhotcopy备份mysql myisam脚本
- c语言 bcd码 16进制字符串 原理,ASCII码、HEX、字符、BCD 等等 基础知识思考
- Lesson 2 Create First Qt Program
- 2018-08-06
- opencv中的Mat图使用CDC显示
- 如何使用Syncios Data Recovery直接从 iOS 设备恢复数据?
- WebService 分布式事务怎么控制
- python是一门胶水语言_python为什么叫胶水语言
- 2020.12.28用isprime函数判断m是否为素数
- ecshop手机支付宝支付篡改金额BUG
- app播放无声音乐实现app后台运行
- JAVA计算机毕业设计教育培训机构信息管理系统Mybatis+系统+数据库+调试部署
- 数字图像处理实验(五)|图像复原{逆滤波和伪逆滤波、维纳滤波deconvwnr、大气湍流扰动模型、运动模糊处理fspecial}(附matlab实验代码和截图)
- AI-多模态-文本->图像-2021:Stable Diffusion【开源】【目前开源模型中最强】
热门文章
- centos7刷新dns
- 浏览器背后的运行机制
- 360浏览器html在哪儿,360浏览器打印页面设置在哪里
- CI框架全局登录控制
- 直播app源码用php做直播平台开发怎么样?
- 爬取cloudmusic歌单
- Kubernetes(K8s)学习笔记(一)
- GEE学习笔记3:Landsat8 植被指数计算
- Spring Cloud Eureka Server 源码解析(七)处理客户端增量下载请求、读写锁问题
- matlab 崎岖 视频的起始时间,怎么样给视频打马赛克 视频中打马赛克 视频某个时间段开始局部加马赛克 设置起始时间...