iOS版本控制工具(SVN,GIT,SourceTree)

公司的实际开发中,在天朝使用较多的还是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版本号   //查看回退版本

正式:

    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>项?目经理将服务器已有的内容下载到本地

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

git中需要注意的几个命令(名称)

  • push:提交到服务器
  • pull:更新
  • clone:完整下载
  • commit:本地提交

一.命令?行的演练

1.初始化?一个代码仓库

  • git init

2.如果使?用git必须给git配置?一个?用户名和邮箱 给当前的git仓库配置?一个?用户名和邮箱

  • git config user.name “why”
  • git config user.email “[email protected]”

配置?一个全局的?用户名和邮箱

  • git config —global user.name “why”
  • git config —global user.email “[email protected]” 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等等(更多可以看下这里的介绍)

今天我们介绍的是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一些常用的版本控制操作简单列举:

选择对应的选项实现:

提交代码到服务器代码仓库(注释)

如果你看到了这里,或许你对版本控制已经基本上了解,但或许你也感觉有点蒙,但是没关系,上面这么多,实际开发中用到的十分之一不到。

时间: 2024-10-11 01:04:04

iOS版本控制工具(SVN,GIT,SourceTree)的相关文章

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VSS离职的.其实使用什么代码管理工具要看项目而定.毕竟使用何用代码管理工具,是项目管理者根据需要来决定的,如果你是一个开发人员,首先要让自己的技术精进一点.下面根据我个人理解,把这几种常见的代码管理工具使用场景简单介绍一下. 1.几种代理管理工具的适用场景 A.如果你的项目是5-6人的小团队,那么使用

版本控制工具 svn

一.svn 概述 1).svn的作用 1.多人协作开发:2.远程控制:3.版本控制 2).软件控制管理工具发展之路 SCM:软件配置管理,所谓的软件配置管理实际就是软件源代码的 控制与管理. CVS:元老级产品(比较古老,现在已经不适用了) VSS: ClearCase: SVN: 主流产品 3).什么是 SVN SVN 全称 subversion SVN 是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数软件公司都使用svn作为代买版本管理软件. 4).获取 SVN 软件 属于C/S

版本控制工具SVN教程(一)

写在前面 首先说一下,为什么要了解一些基础的版本管理工具? 比如在公司或者有其他合作的伙伴(大于或者等于2个人),共同参与合作软件项目开发,每一次更改都要发包或者重新合并吗,那万一同事或者伙伴都改了相同的代码,又该如何处理? 所以较好的处理方式就是------利用版本控制(Revision Control)工具. 利用版本控制的好处有: 可以备份多个版本,利于多个版本的控制(即使当前的版本崩溃了,也能回到某一个正常的版本,节省了返工的成本) 不容易引发冲突bug,易于解决: 项目发布简单: 版本

版本控制工具svn

SCM   svn   /cvs 版本控制 软件配置管理  代码管理 仓库  工作台  delta  基线   分支 标签 版本控制每次备份不是每次备份整个内容,只是备份不同的 svn 1.建仓库 svnadmin create svnrepo  创建名叫svnrepod的仓库 cmd命令 svnserve -d -r svnrepo 启动服务器 2/客户端 repobrowser checkout  下载仓库 checkin  上传 tortiosesvn   and    svn commi

版本控制工具 svn 二

一.图标 忽略图标 实例 二.版本 回滚 tortoisesvn --> 版本更新-->一般情况下使用 "显示日子" 回滚 三.版本冲突 版本冲突产生原因 多人先后提交文件,每个人提交的文件内容可能不同,产生冲突 版本冲突解决方案 (1).提交数据产生冲突,点击"更新" (2).产生的冲突数据 (3).解决冲突 只保留  提交后有冲突的文件,其他文件只作为参考 和同事一块 修改 有冲突的内容  (随便更改别人的数据,是会被挨打的) 更改成功 再一次提交数

版本控制工具之Git

git三层结构 工作区working directory 暂存区staging index 版本库git directory(Repository) Git文件的四种状态 untracked未被追踪 Modified在工作区修改了未添加到暂存区 Staged   添加到了暂存区未添加到版本库 Committed数据被安全的存储在本地库中 Git的安装 下载.. $ git --version :查看git版本 几个简单的控制台命令使用: $ cd D://www/20160218/  :进入 $

SVN版本控制工具的使用

一 版本控制工具的作用 两个疑问 1.什么是版本控制 2.为什么要用版本控制工具 二 SVN服务器端的安装和配置 版本控制工具-SVN SVN--客户端:TortoiseSVN SVN--服务端:VisualSVN 下载 服务端安装 1.next 2.第二个勾的作用是使得命令行生效,避免设置环境变量 3.选择第一个标准版,企业版需要付费 4.进入标准版,第一个是安装路径,下面的为仓库路径,代码放在该仓库位置 5.点击next直至安装成功 服务端的配置 创建新仓库 1.配置仓库:新创建一个仓库 每

版本控制工具比较-CVS,SVN,GIT

首先介绍几个版本控制软件相互比较的重要依据,更详细的比较请参考文中链接: * 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和 分布式两种模式.在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本 (working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改.而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他 们的工作副本外,还

源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Benedict Torvalds 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码) git的现状 在国外已经非常普及,国内并未普及(在慢慢普及) 越来越多的开源项目已经转移到git CVS 最早的开源.免费的集中式版本控制工具 自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况 SVN