版本控制SVN和Git使用详解
公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!
-----------------svn-----------------
一:最常用基本步骤---
- 下载(完整下载,第一次),将服务器的项目下载到本地开始开发
svn checkout ip —uaerbane=? —password=? //这里需要add
简:co
- 更新仓库,服务器项目有变动的时候需要更新到本地,以免错误或者冲突
svn updata //这里的直接commit就可以了
简:up
- 写代码。。。。。。。。。。。。。
- 查看状态
svn status
简:st
- 添加到仓库
svn add name
- 提交项目
svn commit -m “注释"
简:ci
- 版本回退:错误操作,需求更改,查看历史
svn updata r版本号 //查看回退版本
正式:
-
- svn update
- svn merge -r 版本号(现):版本号(前) name
- svn ci -m “注释"
- 移除文件
svn remove name
简:rm
- 查看版本号
-
- svn updata //先更新所有数据
- svn log //打印所有版本
二:冲突解决--------
out of data——
- —>updata
- —>commit
(手动解决冲突:postpone):
svn resolved name
有效的避免冲突:
- 先updata->子啊修改文件
- 或者修改文件之前和同事打招呼
补充:
当座位一个新?人加?入(李四进?入公司)
1.需要做的事情
-
- 和项??目经理要svn的服务器地址/svn账号和密码 需求?文档 : 当前的需求
- 接?口?文档 : 接?口?文档记录详细的服务器所有的接?口 效果图 : 界?面到底做成什么样?子
2.将服务器完整的代码下载到本地
- svn checkout 服务器地址 ?用户名和密码
3.代码冲突
-
- out of date : 过期
- df : 在命令?行中给展?示所有的不同的地?方
- e : 在命令?行编辑冲突
- s : 展?示可解决冲突的选项
- mc : 使?用我的代码,来覆盖服务器代码
- tc : 使?用服务器的代码,来覆盖我的代码
- p : 对?比所有的版本变化,?手动解决冲突—>svn resolved person.h
注意:
1>在修改公共?文件之前,最好先update,然后再修改
2>在修改公共?文件之前,可以和同事说?一声,先不要修改?文件,修改完之后让同事更
新
三:图形化界面(UI):Cornerstone/Version
这里简单介绍CornerStone的使用及注意点
--主界面--
实用Cornerstone需要注意的几个地方:
-
- 1.查看日志
找到“Log”选项,选择并点击。
查看自己当前的版本是否是最新的,如果不是最新的版本,从第2步开始执行;
如果自己当前的版本是最新的,从第3步开始执行;
-
- 2.更新到最新版本
当前程序员在打开工程项目之前,找到“Update to Latest Revision”选项,选择并点击。
目的:保持当前程序员客户端的项目版本是最新的。
-
- 3.编辑项目
- 4.提交之前,再次点击“Update to Latest Revision”,保持项目是最新版本。
- 5.更新最新版本后,如果有错误,冲突等情况,解决,直到没错误!
- 6.提交项目,找到“Commit Changes”选项,选择并点击。
目的:把当前编辑后的项目提交的服务器。
-
- 7."lock"和“unlock”的使用
当我们正在编辑某个文件时,为了防止被其他人修改,可以在编辑之前,使该文件处于锁定状态,当我们编辑后,要提交的时候,再解锁。
-
- 8.提交项目,都要写详细备注并署名。
- 9.恢复到以前的版本,以前其他出错情况,请参考稍后的文档说明或上网搜索。
最后总结一下使用步骤
1.项??目经理初始化项??目
1>项??目经理将服务器已有的内容下载到本地
- 记住选择正确的svn版本号—>1.7
2>项??目经理创建项??目到code?文件夹
3>项??目经理忽略掉?一些不需要的?文件 - Xcode会帮我们记录当前正在编辑的?文件,下次打开时停留在该?文件
- Xcode会帮我们记录??目录打开情况,同事不需要共享
断点信息同事不需要共享,所有也需要忽略
xcuserdata
2.使?用Xcode的svn注意点
1>当项??目中如果使?用到了静态库,必须使?用命令?行将静态库添加到svn管理之下
2>项??目中如果使?用storyboard,svn的管理也需要特别注意
- 如果可以使?用xib那么尽量使?用xib
保证同时只有?一个?人在修改storyboard
3.公司使?用svn技巧
尽可能修改?文件之前要update,写?一些代码之后就?立即提交到服务器
如果今天写了很多代码,建议在下班前半个?小时就提交.
cornerStone中三个基本目录的含义:tags,branch,truck
- truck主分支,是用来做主方向开发的,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch。
- branch:是用来做并行开发的,这里的并行是指和trunk进行比较。
- tag:是用来做一个milestone的,不管是不是发布版本,但都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读的标记。咱们ITOO1.0阶段开发完毕,就可以打一个tag,然后进入2.0的开发。tags的作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识,以后branches上修改的bug代码再合并到trunk上时就从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会再合并。
假设个例子,ITOO1.0开发完成,这个时候要做一个tag,tag_release_1_0,然后基于这个tag做发布,比如安装程序等。trunk进入 1.1的开发,但是1.0发现了bug,那么就需要基于tag_release_1_0做一个分支(branch),branch_bugfix_1_0,基于这 个branch进行bug修改,等到bugfix结束,做一个tag,tag_release_1_0_1,然后,根据需要决定 branch_bugfix_1_0是否并入主干(trunk)。
对于svn还要注意的一点,就是它是全局版本号,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的 2xxxx版本。就是这个意思了。但是,它还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟记住tag_release_1_0要比记住一个 很大的版本号容易的多。
SVN真的是一个很强大的工具,他很好的管理了我们的团队合作。
-----------------git-----------------
图形化界面(UI):Cornerstone/Version
这里只大致介绍sourceTree,毕竟在中国Git使用并不常见
SourceTree
作为一个懒人 Git的命令行我是不太爱的 所以GUI的工具就成了我的首选
Mac下的Git工具真是五花八门 著名的有Tower SmartGit等等(更多可以看下这里的介绍)
今天我们介绍的是SourceTree 出品方为Atlassian 旗下的产品还有著名的track工具JIRA Github的竞争者Bitbucket等等(这两个我也是经常用的 尤其是BitBucket 支持免费私有仓哦~)
SourceTree的特点如下
这是SourceTree的Repo列表界面 也是打开时的默认界面 这里可以对所有的Repo进行统一的管理 也支持分组这是SourceTree的Repo详情界面 这里是单独对某个Repo操作的地方 Git的所有操作你都可以在GUI上进行 非常的方便顺手
具体细节就请自己使用之后慢慢体会吧 这里就不多介绍了
-----------------Xcode-----------------
上面的SVN和Git其实都可以在Xcode中直接使用,如果你只是简单的实现提交和更新服务器仓库里面的代码,使用Xcode基本上就可以实现了,但是有的时候可能Xcode不能满足我们的要求或者相对比较麻烦,所以我们一般情况都不会立刻就选择Xcode的,除非项目很简单
下面是Xcode一些常用的版本控制操作简单列举:
选择对应的选项实现:
提交代码到服务器代码仓库(注释)