SVN的使用(命令行)

一. SVN原理图

  1. 需要SVN账号和密码.
  2. Checkout将整个项目下载到本地.
  3. 每天下班前,将可运行的代码提交,即commit”可运行版本”.
  4. 每天上班前,update前一天所有代码.
    这里写图片描述

二. 运用过程

  1. 先从服务器上下载代码(本地仓库)Check.
  2. 当有人代码写完后(必须是可运行的代码),commit(提交)到服务 器,这时服务器上代码会更新为此人提交的代码.
  3. 当再有人commit(提交)代码时,会报错(out of data).
  4. 这时需要做更新(Updata)操作.
  5. 使用策略: 拷贝-修改-合并 方案
    这里写图片描述
    这里写图片描述

三.SVN 命令行

/**1.SVN基本命令*/
命令行格式:
svn <subcommand> [options] [args]
说明
svn 子命令 [选项] [参数]
提示:
#   [中括号]中包含的内容是可选的
#   (子命令缩写)
/**2.查看帮助信息*/
$ svn help
查看svn所有命令的帮助
$ svn help 子命令

1. 将服务器文件下载到本地(Checkout)

将项目检出(下载) 至本地,URL是服务器地址,[PATH]是要下载的路径
svn checkout URL  [PATH]
svn co URL  [PATH]
注意:这里的中括号[ ]代表可选(可以省略)

示例
svn checkout  https://192.168.1.106/svn/Weibo/ /Users/lnj/Documents/workspace

# checkout服务器上的代码仓库
$ svn co http://10.0.1.15/svn/weibo --username manager --password jingli

提示:checkout(co)之后,本地代码库中会记录用户名和密码,后续操作不用再另行指定.
http:开头代表的是:代码仓库的远程地址.
jingli代表的是:将代码下载到本地的哪个路径.
如果省略jingli的路径,就下载到命令行当前所在的路径.

2. 提交到服务器(Commit)

2.1. 首先要添加到本地仓库.

向本地的版本控制库中添加一个新文件

svn add PATH

示例
svn add /Users/lnj/Desktop/workspace/Weibo/branches/User.m
代表的是:添加哪个文件到版本控制库中

/**main.c 是要添加本地仓库的文件*/
$ svn add main.c PATH

2.2. 提交到服务器(commit 缩写ci)

$ svn ci -m "添加了main.c文件" 或下面代码
$ svn ci -m "备注信息"
注意:一定要养成写注释的良好习惯

3. 更新代码仓库

svn update [PATH]
示例
svn update /Users/lnj/Desktop/workspace/Weibo/branches/User.m
/Users代表的是:更新哪个文件的内容
如果省略橙色的路径,就更新命令行所在路径的所有内容
/**3.2将文件恢复至某个版本*/
svn update -r 版本号 [PATH]

4. 删除某个文件(注意:千万不要手动移到废纸篓)

删除服务器上的某个文件,需要做2个步骤
将文件从本地的版本控制库中移除:svn delete 、svn remove
提交刚才的删除操作到服务器:svn commit

将文件从本地的版本控制库中移除
svn delete PATH

示例
svn delete /Users/lnj/Desktop/workspace/Weibo/branches/User.m
橙色代表的是:将哪个文件从版本控制库中移除

5. 查看文件状态

svn st 显示的文件状态

第1列状态说明:描述文件被添加、删除或其他修改
--------------------------------------------------------------------------------
' ' 没有修改
'A' 被添加到本地代码仓库
'C' 冲突
'D' 被删除
'I' 被忽略
'M' 被修改
'R' 被替换
'X' 外部定义创建的版本目录
'?' 文件没有被添加到本地版本库内
'!' 文件丢失或者不完整(不是通过svn命令删除的文件)
'~' 受控文件被其他文件阻隔

6.如何解决冲突的问题
1. 超时
当本地低于服务器版本时,这时提交不成功,这时需要先更新,后提交
错误代码如下,出现out of date就是超时了,这时需要svn update:
这里写图片描述

  1. 冲突

    1.当多个人修改了同一个文件同一行的代码,conflict discovered in 是冲突报错.
    2.解决方法 : 3种方法 :

    1. mine-conflict 代表用我们的代码替换服务器代码 mc
    2. thrirs- conflict 代表用服务器的代码替换服务器代码 tc
    3. postpone 代表手动 p

3.手动解决冲突

如果点击p ,自己解决的话,会创建三个备份文件, 一个本地版本备份,一个是服务器版本备份,一个是修改后版本备份,main.c代表自己demo文件.

main.c.mine 备份自己最新代码
main.c.17 备份修改前的代码.
main.c.18 备份服务器的代码

<<<<<<<<<到======中间存放的是我们自己修改的代码,=====到>>>>>>>中间存放的是服务器最新代码,要修改把它们如<<<<<< ==== >>>> 删除

注意:手动解决完冲突之后,需要告诉SVN服务器我们已经解决了,resolved代表告诉服务器我已经解决了, svn resolved 路径 ,如下

svn resolved caipiao/Lottery/Classes/Mine/Controller/Html/HelpViewController.m

**7. SVC客户端命令**
svn checkout :下载服务器的代码到本地 (简写svn co)
svn commit :将改动的文件提交到服务器(简写svn ci)
svn update :更新服务器的代码到本地 (简写svn up)
svn add :向本地的版本控制库中添加新文件
svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
svn move :移动文件或者目录或文件更名
svn mkdir :创建纳入版本控制下的新目录
svn revert :撤销之前的一切修改
svn merge :将两个版本之间的差异合并到当前文件
svn info :查看文件的详细信息 
svn diff :查看不同版本的区别
svn log :查看日志信息
svn list :列出版本库下的文件和目录列表
svn status :查看文件状态(简写svn st)
svn help :获取帮助信息(比如svn help ci)
svn lock :加锁
svn unlock :解锁

常见问题

  1. 不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器)
svn revert
  1. 不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器)
svn revert
  1. 不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器)
svn update -r 版本号
  1. 不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器)
svn update -r 版本号
  1. 注意
    .svn这个隐藏目录记录着非常关键的信息
    千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值