在我的上一篇文章《iOS开发源代码管理之SVN简介以及SVN服务器搭建》中,简单的介绍了集中式源代码管理工具SVN,那么本文就来介绍一下目前比较流行的一种开源源代码管理工具git.
GIT在国外非常流行,在国内也慢慢普遍,使用率越来越高。它是一种分布式的管理工具,那么这里有两个概念,什么是集中式,什么又是分布式?
1.集中式
ComputerA想要服务器最新的代码直接通过checkout向服务器下载
ComputerA在本地修改代码后,直接提交到服务器
ComputerB想要服务器最新的代码直接通过checkout向服务器下载
ComputerB在本地修改代码后,直接提交到服务器
所有的内容统一交给服务器来进行管理
2.分布式
服务器本地有个代码仓库,从服务器更新代码,上传代码
ComputerA想要服务器最新的代码由本地代码仓库将服务器的代码下载下来,再通过本地代码仓库的项目下载到ComputerA
ComputerA在本地修改完代码后先提交到本地的代码仓库,再由本地的代码仓库提交到服务器
ComputerB操作与ComputerA相似
代码的提交与更新首先会通过本地代码仓库,本地代码仓库再通过服务器,并不是直接交给服务器来进行管理
分布式和集中式的对比
1. 在速度上,git可以先提交给本地,然后再提交给代码仓库,而SVN只能直接提交给代码仓库,所以在网络出现状况时,git就表现出了绝对优势。
2.SVN使用分支比较笨拙,需要先从tags中将代码拷贝过来,修改后备份到分支,分支再与主干的项目合并。
3.git可以轻松拥有无限个分支,轻松的在各个分支随意切换。
4. 旧版本的SVN会在每一个目录置放一个.svn(目前svn1.7的只有一个.svn),git只会在根目录拥有一个.git。
GIT的使用的2种方法
1.命令行:常用的命令简单且不多,直接使用命令行就行
2.图形化界面工具
SourceTree GitHub(SourceTree GitHub 3.xcode xcode对git的集成非常非常好,一般情况下, 直接使用xcode就行)
GIT的常用指令
git help:git指令帮助手册 查看其他指令的做法:githelp其他指令
git config:git的配置信息相关(修改的是.git/config文件)
配置用户名:git config “user.name”用户名(用于跟踪修改记录)
配置邮箱:git config “user.email”邮箱(用于多人开发间的沟通)
设置指令的别名:git config alias.别名原指令名称
将此设置应用到整个系统中:gitconfig––gloabal
查看配置信息:gitconfig–l
编辑配置信息:gitconfig–e(用vim编辑,:wq是退出vim编辑器)
git status:查文件的状态
查看某个文件的状态:git status文件名
查看当前路径所有文件的状态:git status
git log:查看文件的修改日志
查看某个文件的修改日志:git log文件名
查看当前路径所有文件的修改日志:git log
用一行的方式查看简单的日志信息:git log – –pretty=oneline
查看最近的N次修改:git log –N(N是一个整数)
git diff:查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
git init:初始化一个空的本地仓库,生成一个.git目录,用于维护版本信息
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径
git add:将工作区的文件保存到暂缓区
保存某个文件到暂缓区:git add 文件名
保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点.)
git commit:将暂缓区的文件提交到当前分支
提交某个文件到分支:git commit -m ”注释”文件名
保存当前路径的所有文件到分支:git commit -m ”注释”
git reset:版本回退(建议加上––hard参数,git支持无限次后悔)
回退到上一个版本:git reset – –hard HEAD^
回退到上上一个版本:git reset – –hard HEAD^^
回退到上N个版本:git reset – –hard HEAD~N(N是一个整数)
回退到任意一个版本:git reset – –hard 版本号(版本号用7位即可)
git reflog:查看指令使用记录(能够查看所有的版本号)
git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
git clone:下载远程仓库到本地
下载远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL存放仓库的路径
git pull:下载远程仓库的最新信息到本地仓库
git push:将本地的仓库信息推送到远程仓库
git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
GIT的工作原理
1.svn开发工作在主干进行,git开发工作在分支中进行
2.通过add命令可以将工作目录没有被添加到暂缓区的文件添加到暂缓区
3.通过commit命令将暂缓区的所有内容上传到当前分支,提交成功后清空暂缓区内容
远程仓库
GIT服务器的搭建非常繁琐,如果是多人团队开发,最好还是搭建一个远程仓库
搭建远程仓库的途径
1.自己搭建一个git服务器:费时费力
2.在GitHub上托管项目:公开项目免费、私有项目收费,很多第三方开源项目
3.在oschina上托管项目:完全免费,在国内访问速度快(推荐使用)
创建Github代码仓库和HTTPs验证
一.前提准备
1.在GIT中创建一个Github文件夹演练的github
二.登陆github网站github
三.创建远程仓库
1.点击+ ->New repository
2.创建远程代码仓库
3.创建后会来到此界面,将https的url复制下来
四.在Xcode中添加远程仓库
1.点击Xcode的偏好设置
2.点击添加仓库
3.填写服务器地址,源代码管理类型,认证方式以及帐号密码
4.看到以下界面说明认证成功
五.初始化项目
1.点击Source Control -> checkout
2.选择刚刚创建远程仓库
3.下载到指定位置
4.查看下载的内容
5.创建项目放到meituan工作目录
6.将项目commit并push到远程仓库(Source Control -> commit)
7.浏览器查看仓库里是否有该项目
六.开始开发
1.创建dog类commit并push到远程仓库(Source Control -> commit)
2.浏览器查看仓库里是否有Dog类
创建代码仓库的时候选择需要忽略的语言文件,在提交到服务器的时候,如果网络不太好,可以先commit,之后再push到远程服务器