必学命令 help 子命令
cd path : 将当前路径切换到path路径
pwd :查看当前所在路径
ls (-a / -l / -G) : 查看当前文件夹下所有文件及文件夹
touch filename1 filename2 : 创建一个或者多个文件
rm filename : 删除文件
open filename :打开文件
cat filename :查看文件内容
more filename :分页查看文件内容
mkdir 文件夹名称 :创建一个文件夹
mv oldFilePath newFilePath :移动文件(可借助此命令给文件重命名)
补充
. 代表当前文件路径
.. 代表上级目录
以 .开头的文件,代表隐藏文件
显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
不显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles No && killall Finder
提示
- 如果要使用当前目录中的文件名,输入到一半时,按TAB键能够补全
个人开发操作
从服务器下载一份完整代码到本地开始开发
svn checktout URL [path] —-username=用户名 —-password=密码
修改文件提交
- svn commit -m “注释”
新建文件提交
- svn add filename (将文件添加到本地版本控制进行管理
- svn commit -m “注释”
- 提交多有 svn add *
删除文件提交
一定不要直接手动删除文件
- svn remove filename / svn delete filename 先从本地代码仓库管理中移除,然后删除
- svn commit -m “注释” (提交,让服务器也删除对应文件)
任何向服务器提交的操作,都要加注释 添加 -m参数
常用命令补充
- svn status
查看当前工作空间内, 所有 有变化的文件 的状态
如果执行此命令什么都没输出, 代表本地没有东西要提交 - svn log
查看当前版本的操作日志(什么人, 什么时间, 做了什么操作)
常见状态
' ' 没有修改
'A' 被添加到本地代码仓库
'C' 冲突
'D' 被删除(通过svn命令删除的文件)
'I' 被忽略
'M' 被修改
'R' 被替换
‘G’ 被合并
‘U’ 已经更新
‘E’ 已经存在
'X' 外部定义创建的版本目录
'?' 文件没有被添加到本地版本库内
'!' 文件丢失或者不完整(不是通过svn命令删除的文件)
'' 受控文件被其他文件阻隔
团队开发操作
- 添加文件同步
- 修改文件同步
- 删除文件同步
- 超时和冲突解决演练
多人开发中最常遇到的问题: 超时和冲突
超时
超时: 当本地文件版本小于服务器文件版本时, 如果要提交本地文件,就会报 out of date 超时错误
原因: SVN通过版本号管理每一个文件,如果一个文件被修改并提交到服务器,那么服务器上的对应文件版本号就会加1, 如果你的版本号小于服务器版本号,就说明,肯定有别人在后来又修改了那个文件
- 大版本提交或合并到小版本,会把小版本内容覆盖
- 大小版本不能提交到大版本
超时解决方案: 针对于超时问题,对应的解决方案,就是先从服务器更新下最新版本, 保证本地版本号与服务器版本号一致,这是文件可以提交的前提
冲突: 为了解决超时问题,只能更新.而在更新过程中,如果几个人修改了同一文件的同一行代码,此时就会产生冲突
原因: 版本控制器不会那么智能, 去决定应该使用谁的代码作为最终代码,只能将选择权抛给用户,让用户解决
(df) diff-full, (e) edit, (s) show all options:
(p) postpone, // 延迟处理(待会我自己处理)
(mc) mine-conflict, // 使用我的(本地的)
(tc) theirs-conflict, // 使用服务器
<<<<<<< .mine
本地代码
=======
服务器代码
svn resolved 文件名
svn commit -m "解决冲突"
SVN终端-版本回退
- 做错了,想反悔到前面某个状态
- 修改了,但未提交的情况反悔
方案1: (大力推荐)
svn revert (作用:返回到上次提交后的状态)
方案2: (不推荐)
删除整个项目,重新checkout
- 修改了,并且提交了的情况反悔
方案1: 大力推荐
svn update (将本地代码更新到与服务器相同的版本)
svn merge 文件名 -r 版本1:版本2
(作用:把版本1 -> 版本2 的 diff 作用在当前版本)
svn commit -m “本地和服务器都回退到某一指定版本”
方案2:
svn update -r 指定版本号(此时本地代码已经变化,但是服务器没有改变)
修改部分文件
svn update (此时会产生冲突, 选择使用自己的代码即可)
再次提交代码
方案3:(垃圾,最不推荐)
手动保存需要回退的文件内容
删除文件,提交到服务器
重新添加文件,上传到服务器
Cornerstone基本使用
Xcode管理SVN
演示静态库的提交
- .a静态库文件,必须使用命令行手动添加到版本控制器中,然后提交
怎样忽略文件
过滤不需要上传的文件, 忽略文件(xcuserdata文件夹)
文件打开状态
断点信息
文件夹关闭打开状态
注意:projct setting文件不要忽略
- 存放一些文件顺序和文件夹结构,文件引用等信息
SVN目录规范
trunk :主干,当前开发项目的主目录
我们之前更新代码,提交代码都是在这个文件夹进行操作brannches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中。
修复Bug,研发不确定的新功能都在这里做tags:标记目录,通常作为重大版本的备份;
如果有发布版本出现Bug,可以快速的找到对应版本的项目备份,然后开一个分支,进行Bug修复,用于与主干区分- 画图说明三个目录使用流程
- 演示版本备份流程
- 演示已发布版本bug解决流程