一、git的基本使用
例子:
我需要在本地创建一个代码仓库,然后我们还需要一个远程的代码仓库,然后把两者链接起来,给你的代码打上一个tag,然后删掉
两种方式:
- 我们将远程代码仓库直接克隆到本地然后再打tag:
# 在 github 创建一个叫 Test12的仓库
$ git clone https://github.com/lir9205/Test12.git #将远程仓库克隆到本地
$ cd /Test12/Classes
$ touch Person.h Person.m #创建一个Person.h 和 Person.m 文件
$ git add . #将工作区所有不在暂缓区的内容添加到暂缓区
$ git commit --m ' 创建了 Person 类' #将在暂缓区的所有内容提交到本地版本库,清空暂缓区
$ git push # 上传到远程仓库
$ git tag '0.0.1' # 打上一个 tag 0.0.1
$ git tag #查看所有 tag
$ git push --tags #将新添加的 tag 提交到远程仓库
# 修改Person.h 文件,再提交一次
$ git add .
$ git commit --m '修改了 Person.h 文件'
$ git push
$ git tag '0.0.2'
$ git push --tags
# 通过 tag 保存或下载每个版本的代码
$ git log #查看提交日志
$ git tag -d 0.0.2 # 本地删除 tag 0.0.2
$ git push origin :0.0.2 # 将删除操作上传到远程仓库
git commit
一次就会产生一个版本号(是一个40位哈希值)
git tag '0.0.1'
每个 tag 对应一个版本号,可以通过 tag 下载不同的版本
- 本地初始化一个代码仓库,远程代码仓库和它进行链接,最后打tag:
# 本地创建一个文件夹 Test22,在 github 也创建一个叫 Test22的仓库
$ cd /Test22
$ git init # 初始化一个代码仓库
$ git remote add origin https://github.com/lir9205/Test22.git #让本地与远程仓库建立连接
$ git remote # 验证是否连接上,查看远程所对应的代码仓库
$ git pull origin master #将远程仓库的 master 分支拉取到本地
$ cd /Test22/Classes
$ touch Cat.h Cat.m
$ git add .
$ git commit --m ' 创建 Cat 类'
$ git push origin master # 推送到远程仓库
$ git tag '0.0.1'
$ git push --tags
# 修改Cat.h 文件,再提交一次
$ git add .
$ git commit --m '修改了 Cat.h 文件'
$ git push origin master
$ git tag '0.0.2'
$ git push --tags
$ git tag -d 0.0.2 #本地删除 tag 0.0.2
$ git push origin :0.0.2 #远程删除 tag 0.0.2
编辑或新建的代码文件需要先添加到暂缓区,然后提交到本地之后,在推送到远程仓库。
- git 回滚代码到某一次提交
回退命令:
$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id 退到/进到 指定commit的sha码
强推到远程:
$ git push origin HEAD --force
二、Cocoapods基本使用
例子:我们新建一个工程,在我们工程当中使用cocoapod安装一个AFN框架
- 如何安装cocoaPods http://www.jianshu.com/p/9e4e36ba8574
- pod install 和 pod upadate区别
Podfile.lock 文件(保存的版本信息)存在的话, pod install 会读取podfile.lock里面的版本信息,保留原来的版本信息,如果不存在的话会直接读取 Podfile 文件,根据 Podfile 文件中的版本号进行下载。 执行 pod install 之后就会生成或跟新Podfile.lock 文件。
pod update 不管Podfile.lock 文件是否存在,都会去读取 Podfile 文件,根据 Podfile 文件中的版本号进行下载。如果没有写明版本号就会下载最新版本。
一般情况下使用的是 pod install。
-
Cocoapods的图解机制
资源库 -> Caches -> Cocoapods -> Pods -> Release:我们每次 pod install 之后缓存到本地的框架
资源库 -> Caches -> Cocoapods -> Pods -> search_index.json(检索索引文件)记录了本地索引库中所有框架描述文件的信息
个人 -> .cocoapods (本地索引库) -> repos -> master -> specs -> 0/1/2/.../9/a/b/.../f(框架描述文件)
$ pod setup # 将远程索引库克隆到本地索引库
$ pod search xx # 检查是否存在检索索引文件(json格式),如果没有就自动创建,根据检索索引文件(json格式)对应的类目(像查字典一样)在本地索引库查找对应的框架描述文件
$ pod install # 根据找到的框架描述文件中的源代码下载地址下载框架安装到我们的项目中
例子:我们创建了一个第三方框架,我们要把它提交到远程索引库,使用pod install的方式安装到我们的工程当中
$ pod spec create WCHChat #在源代码所在路径创建框架描述文件 WCHChat.podspec
# 编辑 WCHChat.podspec 文件中的框架信息
$ pod lib lint #进行本地校验
# 先提交到远程仓库
$ git add .
$ git commit --m ' 创建了.spec 文件'
$ git push origin master
$ pod lib lint --allow-warnings #进行本地校验
$ pod spec lint --allow-warnings #进行远程校验,出错了,因为没有添加 tag
$ git tag '0.0.1' #添加 tag 需要跟.spec中的版本号一致
$ git push --tags
$ pod spec lint --allow-warnings#再次进行远程校验,校验通过
#本地校验不会校验 homepage,source, tag,version,所以不需要打 tag
$ pod trunk register 943175984@qq.com 'lir9205' --verbose #注册 cocoapods账号
# 接收发送到邮箱的链接,点击进入后注册成功
$ pod trunk me # 查看注册的个人信息
$ pod trunk push WCHChat.podspec # 将私有仓库推送到CocoaPods上
$ pod search PodName # 搜索库检查是否上传成功,
# 如未找到可执行 $ pod setup 将远程索引库克隆到本地,再进行 pod search
三、Git 的命令演示
一、命令行的演示
- 初始化一个代码仓库
$ git init
- 如果使用GIT,必须给GIT配置用户名和邮箱
给当前的git仓库配置用户名和邮箱
$ git config user.name “Magic”
$ git config uer.email “Magic@163.com”
给git配置全局的用户名和邮箱
$ git config —global user.name “Magic”
$ git config —global uer.email “Magic@163.com”
- 初始化项目
$ touch main.m:创建了main.m
$ git add main.m:将main.m添加到暂缓区
$ git commit -m “初始化项目”:将在暂缓区的所有内容提交到本地版本库,清空暂缓区
$ git add .:将工作区所有不在暂缓区的内容添加到暂缓区
注意:添加的文件或者是修改的文件都要通过add命令将该文件添加到暂缓区。
- 查看文件状态
$ git status
红色:该文件被添加或者被修改,但是没有添加到git得暂缓区
绿色:该文件在暂缓区,但是没有提交到本地版本库
- 给命令行起别名
$ git config alias.st “status”
$ git config alias.ci “conmmit -m”
$ git config —global alias.st “status”
- 删除文件
$ git rm Perosn.m: 将Person.m删除
- 查看版本信息
$ git log -> 版本号是由sha1算法生成的40位哈希值
$ gut reflog:可以查看所有版本回退的操作
- 版本回退
$ git reset — hard HEAD: 回到当前的版本
$ git reset — hard HEAD^: 回到上一个版本
$ git reset — hard HEAD^: 回到上上一个版本
- 给git log起别名
$ 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服务器的搭建非常繁琐(linux)
可以把代码托管到(Github/OSChina)
一个文件夹
一个U盘
- 一个文件夹作为共享版本库
$ git init —bare
- 将共享版本库的所有内容下载到本地
$ git clone 共享版本库的地址
- 删除忽略文件
$ touch .gitignore