Checkout : 从公司的SVN服务器下载公司的源代码,只需要下载一次
commit : 每天下班前需要提交一个”可运行版本"
update :每天上班前 下载昨天提交的"可运行代码"
update 除了可以更新服务器最新的代码以外还可以更新到指定的版本,每次提交代码之后,SVN的版本号都会自动增加1,正是因为版本号每次会自动加1,也就是说版本号是唯一的,所以我们可以根据版本号更新到指定的代码
注意:
1>在向服务器进行commit的时候如果出现了out of date这个错误,说明的是在你进行commit之前已经有人commit过了,服务器的文件名字已经被修改,所以会造成错误,所以每一次需要commit的时候要先update
2>新建文件或者文件夹之后如果直接提交(直接commit)会报如下错误:is not under version control该错误的含义是 : 提示我们提交的文件没有纳入版本控制
3>在提交代码时必须写上注释(要认真写)否则会报如下错误:Could not use external editor to fetch log message;svn co -m”注释"
4>svn add只会将文件添加到本地,不会添加到服务器
5>如果说利用SVN管理源代码,就不能直接在项目中删除源文件
6>如果修改文件之后,并且文件没有提交( commit ),想反悔,可以使用SVN的revert指令让文件回到上一次提交时之前的状态
SVN版本控制策略拷贝->修改->合并
其他版本控制策略 锁定->修改->解锁方案(VSS)不可进行并行开发
SVN在终端的使用指令
svncheckout:下载服务器的代码到本地 (简写svnco)
svncommit:将改动的文件提交到服务器(简写svnci)
svnupdate:更新服务器的代码到本地 (简写svnup)
svnadd:向本地的版本控制库中添加新文件
svndelete、svn remove:从本地的版本控制库中删除文件(简写svndel、svnrm)
svnmove:移动文件或者目录或文件更名
svnmkdir:创建纳入版本控制下的新目录
svnrevert:撤销之前的一切修改
svnmerge:将两个版本之间的差异合并到当前文件
svninfo:查看文件的详细信息
svndiff:查看不同版本的区别
svnlog:查看日志信息
svnlist:列出版本库下的文件和目录列表
svnstatus:查看文件状态(简写svnst)
svnhelp:获取帮助信息(比如svnhelpci)
svnlock:加锁
svnunlock:解锁
svn st显示的文件状态
第1列状态说明:描述文件被添加、删除或其他修改
' '没有修改
'A'被添加到本地代码仓库
'C'冲突
'D'被删除
'I'被忽略
'M'被修改
'R'被替换
'X'外部定义创建的版本目录
'?'文件没有被添加到本地版本库内
'!'文件丢失或者不完整(不是通过svn命令删除的文件)
'~'受控文件被其他文件阻隔
SVN的本质是通过一个文件夹来管理源代码,默认情况下,用于管理源代码的文件夹是隐藏的.
个隐藏文件夹的名称叫做.svn
#显示隐藏文件
$ defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
#不显示隐藏文件
$ defaults write com.apple.finder AppleShowAllFiles No && killall Finder
SVN版本控制常见问题
1>超时SVN 使用SVN有一个原则:先更新本地库的文件,再提交( commit )只有本地的版本号大于等于服务器的版本号时才能提交,否则会报一个out of data 错误
2>冲突当多个人修改了同一个文件的同一行代码会导致冲突
例子:
我: 修改了main.c 11行,增加了abc
其他人: 修改了main.c 11行,增加了123
其他人先提交代码( commit )
我再提交代码( commit )
会报这个错 :Conflict discovered in ( 发现冲突 ),提示我们如何解决问题
1>( mc ) mine-conflict ,代表用我们的代码替换服务器的代码
2>( tc ) theirs-conflict,代表用服务器代码替换我们的代码,本地的代码只保留服务器的,会自动删除我们的
3>( p )postpone 自动动手解决 本地文件中会同时保留服务器代码和本地代码,会在本地创建3个备份
后缀名为mine的是备份的自己最新的代码
后缀名为r+数字为本地修改之前的版本
后缀名为r +数字+1为服务器最新版本,也就是其他人刚提交的版本( commit )
并且本地的文件会增加一些这样的代码<<<<<<<<到 =====中间存放的是我们自己修改的代码======到>>>>>>中间存放的是服务器最新的代码
注意:手动解决完代码冲突之后,需要告诉SVN服务器我们已经解决冲突了,这样才可以保证数据的安全性和SVN的可靠性