iOS-SVN、Git

 版本控制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 “注释"linux

简:cigit

 
  • 版本回退:错误操做,需求更改,查看历史
svn updata r版本号   //查看回退版本
正式:
    1. svn update
    2. svn merge      -r  版本号(现):版本号(前) name
    3. svn ci -m “注释"
 
  • 移除文件
svn remove name
简:rm
 
 
  • 查看版本号
    1. svn updata      //先更新全部数据
    2. 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>项⺫⽬目经理将服务器已有的内容下载到本地github

 
  • 记住选择正确的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

        SVN真的是一个很强大的工具,他很好的管理了咱们的团队合做。工具

 
-----------------git-----------------
 
git中须要注意的几个命令(名称)
  • push:提交到服务器
  • pull:更新
  • clone:完整下载
  • commit:本地提交
 一.命令⾏行的演练 
 
1.初始化⼀一个代码仓库
  • git init 
 
2.若是使⽤用git必须给git配置⼀一个⽤用户名和邮箱 给当前的git仓库配置⼀一个⽤用户名和邮箱
  • git config user.name “why”
  • git config user.email “why@163.com”

配置⼀一个全局的⽤用户名和邮箱
  • git config —global user.name “why”
  • git config —global user.email “why@163.com” 3.初始化项⺫⽬目
  1. touch main.m : 建立了main.m
  2. git add main.m : 将新添加的⽂文件或者修改的⽂文件添加到暂存区
  3. git commit -m “初始化项⺫⽬目”
  4. git add . : 将全部没有被添加到暂存区或者代码仓库的⽂文件添加到暂存区

注意:⽆不管是新添加的⽂文件或者修改的⽂文件,都须要先经过add命令添加到暂存区中, 以后再经过commit命令添加到本地仓库中

4.查看⽂文件的状态 git status
  • 红⾊色 : 新建立的⽂文件或者被修改的⽂文件,没有被添加到暂存区
  • 绿⾊色 : 表⽰示⽂文件在暂存区,可是没有被添加到本地仓库中 5.给命令起别名
    • git config alias.st “status”
    • git config alias.ci “commit -m”
    • git config —global alias.st “status”

6.git删除⽂文件 git rm ⽂文件名

7.查看版本号 git log
  • git reflog
  • git config --global alias.lg "log --color --graph -- pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit” git lg

8.git的版本号是由sha1算法⽣生成40位的哈希值 9.版本回退
  • git reset —hard HEAD : 回退到当前的版本
  • git reset —hard HEAD^ : 回退到上⼀一个版本 git reset —hard HEAD^^ : 回退到上上个版本 git reset —hard HEAD~100 : 回退到前100版本 git reset -hard 版本号(前5位)

                                              
二.团队开发—共享版本库
  1. 真实的GIT服务器的搭建,是⾮很是繁琐的事情(Linux) 
  2. 一个⽂文件夹
  3. 优盘 
  4. 将代码托管到别⼈人的服务器(Github/OSChina)

1.⽂文件夹做为共享版本库 git init —bare

2.项⺫⽬目经理将共享版本库的内容先下载下来 git clone 地址

3.添加须要忽略的⽂文件
  • touch .gitignore 去github上搜索.gitignore->Objective-C git add .gitignore
  • git commit -m “添加了须要忽略的⽂文件”

4.项⺫⽬目经理初始化项⺫⽬目
  • git commit -m “初始化项⺫⽬目”—>提交到本地代码仓库

5.将项⺫⽬目push远程仓库中 git push origin

6.当源代码管理是使⽤用GIT,而且在Xcode进⾏行多⼈人开发的操做 注意:当使⽤用GIT,项⺫⽬目中⽤用到了静态库就不须要经过命令⾏行进⾏行添加

三.版本备份(了解) 1.1.0版本开发完成,以后对1.0版本进⾏行备份
  • git tag -a weibo1.0 -m “这个是1.0版本” : 给某⼀一个版本打上标签
  • git tag : 查看全部的标签 2.须要将1.0版本的标签,push到服务器
  • git push origin weibo1.0
3.继续开发2.0版本
4.发现1.0版本有bug,从标签⾥里⾯面clone 1.0版本,从标签建立⼀一个fixbug分⽀支,在分 ⽀支中修复bug
  • git clone 共享版本库
  • git checkout weibo1.0(标签的名称)
  • git checkout -b weibo1.1fixbug(分⽀支名称)

5.修复后的版本上传AppStore/将1.0fixbug进⾏行备份/将1.0fixbug版本和2.0版本 进⾏行合并\
  • git tag -a weibo1.1 -m “这个是修复了1.0版本bug的1.1版本”
  • git tag
  • git push origin weibo1.1 将⼦子分⽀支中代码合并到主分⽀支,pull—>weibo1.1fixbug—>push master—>其 它同事更新


6.删除分⽀支
  • git branch -r
  • git branch -r -d 分⽀支名称

四.将代码托管到别⼈人的服务器⾥里⾯面 1.Github

建立Github上的仓库
  • 1) HTTPS : http + SSL
  • 2) SSH : 公钥和私钥—>settings—>SSH Keys—>⽣生成公钥和私钥 删除代码仓库 能够给别⼈人的代码提⽐比较功能/对别⼈人的代码重构:fork—>pull Request issues : 给框架做者提问题
  • 2.OSChina(Github上⾯面项⺫⽬目不能私有化:交钱能够) 建立代码仓库

HTTPS/SSH
.gitignore不够完整 : ⼿手动添加完成 若是项⺫⽬目想要多⼈人开发:管理—>成员管理—>添加成员:让新⼈人注册⼀一个 OSChina

 
图形化界面(UI):Cornerstone/Version
 
 
 
这里只大体介绍sourceTree,毕竟在中国Git使用并不常见

SourceTree

做为一个懒人 Git的命令行我是不太爱的 因此GUI的工具就成了个人首选
Mac下的Git工具真是五花八门 著名的有Tower SmartGit等等(更多能够看下这里的介绍)post

今天咱们介绍的是SourceTree 出品方为Atlassian 旗下的产品还有著名的track工具JIRA Github的竞争者Bitbucket等等(这两个我也是常常用的 尤为是BitBucket 支持免费私有仓哦~) 

SourceTree的特色以下

  • 免费
    SourceTree是无偿使用的 只要简单的注册一下就行了
  • 跨平台
    Windows和Mac均可以用
  • 完美支持Github和Bitbucket
    我全部Github和Bitbucket上的项目都是用它来管理的 固然 公司的项目也是用SourceTree管理 无不干扰
  • 支持Git Flow
    Git Flow(翻译版)是一套关于Git的使用实践 如今已获得普遍的承认和推广 若是使用得当 开发管理的过程将变得更轻松和清晰
 
 
这是SourceTree的Repo列表界面 也是打开时的默认界面 这里能够对全部的Repo进行统一的管理 也支持分组这是SourceTree的Repo详情界面 这里是单独对某个Repo操做的地方 Git的全部操做你均可以在GUI上进行 很是的方便顺手
 
具体细节就请本身使用以后慢慢体会吧 这里就很少介绍了
 
 
-----------------Xcode-----------------
 
上面的SVN和Git其实均可以在Xcode中直接使用,若是你只是简单的实现提交和更新服务器仓库里面的代码,使用Xcode基本上就能够实现了,可是有的时候可能Xcode不能知足咱们的要求或者相对比较麻烦,因此咱们通常状况都不会马上就选择Xcode的,除非项目很简单
 
下面是Xcode一些经常使用的版本控制操做简单列举:
 
 选择对应的选项实现:
 
 
 
 
 提交代码到服务器代码仓库(注释)
 
 
 
 
 
 若是你看到了这里,或许你对版本控制已经基本上了解,但或许你也感受有点蒙,可是不要紧,上面这么多,实际开发中用到的十分之一不到,因此笔者为你准备了一片简单的实战:
相关文章
相关标签/搜索