版本控制— SVN & git

版本控制—— SVN & GITgit

 

提问windows

什么是版本控制?安全

是可以一直监视代码文件的变动,并存储这些文件以便未来引用的一种机制(软件)服务器

 

为何要使用版本控制?网络

(1)记录哪一个开发人员作了变动
(2)变动发生的具体时间
(3)实际修订的内容
(4)若是须要,能够恢复特定文件或者整个项目到之前的版本
(5)……

 

不使用版本控制还会出现什么问题?框架

不使用版本控制可能出现的问题ssh

1.备份多个版本,费空间,费时间
2.难于恢复至之前正确版本
3.容易引起BUG
4.解决代码冲突困难
5.代码管理混乱
6.难于追溯问题代码的修改人和修改时间
7.项目版本发布困难
8.……

版本控制(Revision Control)分布式

是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便未来查阅特定版本修订状况的系统svn

如今就开始使用版本控制工具

若是是开发团队中的一员,使用版本控制是强制性的!

若是是单人开发,也强烈建议如今就开始使用版本控制

 

使用版本控制能够:

(1)不会对现有工做形成任何损害
(2)不会增长工做量
(3)添加新的功能拓展时,会变得更加容易

 

版本控制工具

1.CVS  开启版本控制之门
2.SVN  集中式版本控制之王者
3.GIT  分布式版本控制之伟大做品

 

SVN

1.SVN简介
2.SVN服务器端安装
3.SVN客户端软件
4.SVN与Xcode的集成

SVN基本交互流程图

 

 

 

SVN服务器安装

VisualSVN-Server

 

 

到公司,管理员创建用户名&密码,而后告知svn的地址

 

http: 80

https: 443

Subversion目录规范

1./trunk   存放开发的“主线”
2./branches   存放支线副本
3./tags   存放标签副本(版本标记1.0, 2.0)

 

SVN客户端软件

1.Cornerstone
2.Versions (注意:添加了Bookmark以后,须要从新启动一下Versions!)

 

有了Xcode,为何还要使用客户端软件?

²由于Xcode对SVN的集成作的不够好,尤为在目录管理方面必需要当心谨慎!

SVN复习

服务器:代码仓库

协议头:

http: 80   不勾选

https: 443   勾选安全

服务器上选中服务器,点击右键,选择”properties(属性)”network(网络)

客户端:Versions

1. Repository Bookmark书签,代码仓库的标签

2. SVN的一个代码仓库中能够放多个项目

3. 用客户端最大的目的就是辅助检查是否有遗漏的状况

 

大部分工做在Xcode中均可以完成

Xcode工做:先更新,再提交!

Xcode中,最好不要多人同时修改一个Storyboard!

注意!!!

.svn这个隐藏目录记录着两项关键的信息

(1)工做文件的基准版本
(2)一个本地副本最后更新的时间戳

 

注意:千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 不然将会致使本地的工做副本被破坏,没法再进行操做

 

SVN与Xcode集成演练

1.利用多个客户端模拟多人协同工做
2.解决代码冲突
3.多人编译同一个Storyboard(谨慎)
4.新建分支并合并回主线

关于分支的细节:

(1)分支中开发的代码,要尽量与主杆Trunk上的代码耦合度低!

使用SVN咱们应该

1.常常更新:下降冲突的可能性
2.提交前需在本机测试经过:下降将问题代码传到版本库
3.提交时必定写备注:方便其余员工查看和本身之后回顾
4.对于不须要提交的文件不要提交到版本库

 

提示

1.每次提交以前先更新
2.天天下班前提交当天编译经过的代码
3.天天上班第一件事情更新前一天的代码

GIT

1.GIT简介
2.GIT工做模型及基本概念
3.GIT经常使用命令及演练
4.在Xcode中使用GIT
5.GIT经典协同模型/分支分类
6.GIT服务器的安装与配置

GIT简介

GIT是一款自由和开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

是Linus(李纳斯)的第二个伟大做品,2005年因为BitKeeper软件公司对Linux社区中止了无偿使用权。Linus迫不得己本身开发了一个分布式版本控制工具,从而Git诞生了

几乎全部优秀的iOS第三方框架都使用GIT

目前移动开发领域,愈来愈多的公司开始转向GIT

Xcode中已经集成了最经常使用的GIT功能

 

 

SVN vs GIT

SVN

集中式

效率略差

国内使用的较为普遍

由较好的图形化客户端和服务器支持,学习和使用相对简单

项目分支管理简单

GIT

分布式

效率高

国际上已经广泛使用,移动互联网项目开始愈来愈多地转向GIT

Xcode集成的功能已经可以知足大部分平常需求,但还有少许命令须要在终端输入,学习曲线相对陡峭

项目分支能够无限细分,更适合大型项目的版本规划

选择GIT的理由

1.分布式,离线操做
2.每日工做备份
3.异地协同工做
4.现场版本控制
5.避免引入辅助目录
6.能够吃后悔药
7.工做进度随时保存
8.快

GIT工做模型

1.集中式协同模型
2.社交网络式协同模型

集中式协同模型

社交网络式协同模型

GIT基本交互流程图

GIT仓库初始化

仓库初始化

git init --bare shared.git

 

仓库文件目录

HEAD:  指向当前分支的一个提交

description:  项目的描述信息

config:  项目的配置信息

info/:  里面有一个exclude文件,指定本项目要忽略的文件

objects/:  Git对象库(commit/tree/blob/tag)

refs/:  标识每一个分支指向哪一个提交

hooks/:  默认的hook脚本

 

 

GIT设置配置信息

命令

git config -l   查看配置信息

git config -e   编辑配置信息

默认修改.git/config文件

我的信省息初始化(不要随意修改)

git config user.name "user01"

git config user.email "user01@163.com"

提示:若是没有配置全局信息,每次克隆以后都必须配置用户名和邮件!

使用--global参数能够配置全局我的信息

 

忽略无需版本控制的文档

echo “*.txt” > .gitignore

 

GIT基本命令

工做区、暂存区和代码区

GIT命令行演练

1.建立代码仓库
2.多人协同工做
3.解决冲突
4.删除无需版本控制的文档

Xcode演练

1.建立代码仓库
2.多人协同工做
3.解决冲突
4.多人同时修改Storyboard
5.删除无需版本控制的文档

.gitignore中的内容

.DS_Store

*.xcworkspace

 

 

 

GIT经典协同模型

中心仓库:包含master和develop两个分支

分支分类

(1)主要分支:master和develop分支
(2)支持性分支:特性分支,发布分支,热补丁分支

提示:

(1)对于商业级项目,真正开发过程当中都是基于develop分支进行的,develop分支是开发主线!
(2)master分支中,只存放相对稳定的分支,例如:0.1版本, 0.2版本
(3)在实际产品开发中,须要“规划版本”,例如:将100个功能规划到5个不一样的版本上
(4)发现bug,要基于“上一个最稳定的版本”进行修复,这是热补丁分支存在的意义!
(5)理解清楚版本管理分支的特性,是迭代式开发的重要基础!

 

给分支打标签

git tag -a v1.0 -m 'Version 1.0'

打一个1.0的标签

git push origin v1.0

将标签推送到远程服务器

git tag

查看当前标签

git checkout v1.0

签出v1.0标签

git checkout -b v1.0hotfix

签出并建立v1.0hotfix分支

git branch

查看当前所在分支

安装GIT服务器

GIT代码仓库本质上是经过命令行来操做的

若是在局域网中配置GIT服务器,只要可以经过终端访问到服务器便可

在Windows上要安装GIT服务器,安装以下三个软件便可

(1)CopSSH  容许windows使用ssh访问unix服务器目录

注意:CopSSH的用户必定不能是windows的管理员!!!

(2)GIT-Windows  在Windows中运行的GIT,其本质就是命令行
(3)Tortoisegit  Windows中GIT的图形化操做客户端

在Mac上要安装GIT服务器,无需安装任何软件,只须要设置访问用户便可,远程用于经过受权的帐户名和密码登陆,便可使用GIT

 

提示:GIT服务器能够是互联网中的某台主机,也能够是局域网中的某台计算机的共享目录,还能够是U盘。总之:分布无所不在!

 

CopSSH

将Git\libexec\git-core下的git.exe , git-receive-pack.exe, git-upload-archive.exe, git-upload-pack.exe拷贝到\ICW\bin下

将\Git\bin\libiconv-2.dll拷贝到ICW\bin下

 

CopSSH本质上就是容许其余计算机以SSH的方式访问计算机资源

 

SSH是目前较可靠的,专为远程登陆会话和其余网络服务提供安全性的协议

 

使用GIT咱们应该

1.常常更新:下降冲突的可能性
2.提交前需在本机测试经过:下降将问题代码传到版本库
3.提交时必定写备注:方便其余员工查看和本身之后回顾
4.对于不须要提交的文件不要提交到版本库

 

提示

1.每次提交以前先更新
2.天天下班前提交当天编译经过的代码
3.天天上班第一件事情更新前一天的代码

Q & A

若是你如今是开发团队中的一员,仍是单人开发,都强烈建议如今就开始使用版本控制!

相关文章
相关标签/搜索