1.git与svn的区别
1.1 git的作用 : 源代码管理
1.2 为什么要进行源代码管理
- 为了方便多人协同开发(多人同时开发时代码整合)
- 为了方便代码备份(标签和分支)
1.3 git与svn的区别 代码的管理方式不一样
版本控制能力 : 提交更新代码
svn 集中式的代码管理.版本控制的能力在服务器上.一旦服务器挂掉了,多人开发就受阻
git 分布式的代码管理,客户端自己也有版本控制能力,万一服务器挂掉了,多人开发依然可以进行工程文件的表现形式不一样
svn 会在每个文件夹下创建一个.svn隐藏文件(体积相对大些,且冲突相对较多)
git 只会在根目录下创建一个.git的隐藏文件(体积相对较小,且冲突相对较少)使用场景不一样
svn 公司内部用,公司内网中使用,一般不会公布出去
git 开源项目使用
2.图形化理解svn和git
提示 : 新公司入职第一天,公司会分配svn账号和密码
svn 服务器 –> 客户端 –> 服务器
git 服务器 –> 客户端 –> 本地仓库 –> 服务器
3.git单人本地操作 (没有服务器)
3.1 目的 : 为了演示git常用的终端命令
3.2 单人本地操作步骤 :
1.在桌面创建本地代码仓库(server文件夹),生成.git的隐藏文件
(git init)
2.创建项目工程(main.m),先cd到server文件夹目录下
(touch main.m)
3.查看.git目录下的文件状态.新文件或者被修改过的文件都是红色的,说明需要被添加到暂存区
(git status)
4.把所有没有添加到暂存区的文件添加到暂存区,添加到暂存区的文件是绿色的
(git add .)
5.在提交文件之前需要配置个人用户信息
(git config user.name “zhangsan”)
(git config user.email “zhangsan@163.com”)
6.将暂存区的文件提交到本地仓库
(git commit -m “版本描述”)
7.工作区文件和本地仓库文件对比
(git diff)
8.文件添加和提交合并为一步的操作
(git commit -m “版本描述”)
9.查看提交记录
(git reflog) (git log)
10.强制回到某个版本
(git reset –hard 版本号前6为)
11.撤销工作区的代码
(git checkout 文件名)
4.git多人(本地)服务器操作
1.创建一个服务器仓库,生成服务器版本控制文件(服务器文件永远不要动)
(git init –bare)
2.经理clone服务器版本控制文件到他的本地(电脑/客户端)
(git clone /Users/zhangjie/Desktop/server)
3.经理设置身份信息(在.git隐藏文件的上级目录)
(git config user.name “经理”)
(git config user.email “manager@163.com”)
4.经理配置.gitignore忽略文件
注意 : 忽略文件在.git文件同级目录下配置.且必须在创建项目工程之前配置好并提交到服务器
忽略文件下提交到本地,在推送到服务器
5.经理创建工程
注意 : 项目工程文件和.git文件,忽略文件在同一目录下
经理把项目工程推送到服务器
6.张三把服务器上经理准备好的项目clone下来
(git clone /Users/zhangjie/Desktop/server)
7.配置张三的个人信息
(git config user.name “张三”)
(git config user.email “zhangsan@163.com”)
8.张三修改文件之后提交到服务器
注意 : Xcode也可以把提交到本地和推送到服务器合并起来
9.经理从服务器上把张三的更新的代码拉取下来
10.撤销代码
方案一 : 终端命令强制回到某一个版本
方案二 : 在Xcode中选择需要discard的文件
5.git的版本冲突
5.1 冲突原因
多个人同时操作同一个文件
某人一直不更新代码,只提交
5.2 解决冲突
5.3 避免冲突
- 分模块开发
- 写代码之前一定要先pull,写完之后立即提交
- 如果要修改公共文件,或是别人的文件,一定要跟同事打招呼,提示同事不要修改.
- 下班前一定要把没有问题的代码提交到服务器,第二天上班第一件事,先pull再写代码
6.git的标签和分支
6.1 标签
作用 : 代码备份.当我们的某一个版本完成后,打上标签.如果后续的开发出现了问题,还有后悔的机会
(git tag -a 标签 -m ‘Version版本’)
终端命令 : (git tag -a tag1.0 -m ‘Version1.0’)
(git push origin 标签)
终端命令 : (git push origin tag1.0)
6.2 分支
作用 : 一般是解决线上的bug,研究新的东西,或者攻关一个难题\
使用步骤 :
1.创建分支
2.在分支上修改代码
3.提交分支代码到服务器
4.合并分支到主干,并提交到服务器
5.此时主干上的代码都是没有问题的
1.经理创建分支,下载tag1.0的代码,推送到服务器
(git checkout 标签名)
(git checkout -b 分支名 标签名)
(git push origin 分支名)
2.张三同步经理建立的分支
(git fetch)
3.张三选择对应的分支开发
4.bug改完了就提交到服务器上对应的分支
5.经理负责分支的合并帮推送到服务器主干
6.张三切换到主干,pull服务器上主干的代码
7.OSChina创建项目
1.打开OSChina网站,进入码云,注册或者直接登录
2.创建私有项目
3.打开sourcetree,并设置个人信息
4.把OSChina上创建的项目clone到本地,即sourcetree管理经理的代码
5.经理创建项目工程,并推送到服务器
6.张三添加成为项目开发者之一
7.张三把OSChina上的项目clone到本地
8.配置张三的个人信息
8.OSChina上面的标签和分支
1.使用sourcetree打标签
2.使用sourcetree创建分支并合并分支到主干
9.发布框架到github
1.注册github
2.在github上创建项目
3.使用github Desktop把创建的项目clone到本地
4.在本地文件新建工程
5.github Desktop来管理代码的提交和拉取
10.发布github上的代码到CocoaPods
1.先注册成为CocoaPods的开发者
2.验证注册是否成功
3.给框架打标签,并推送到github
4.生成pod的描述文件
5.配置pod说明文件
6.验证pod说明文件
7.推送pod说明文件
8.测试 : 搜索发布的框架
9.新建工程测试发布的框架
11.更新框架并发布到CocoaPods
1.更新框架内容
2.打标签
3.修改,验证,推送pod说明文件到CocoaPods
4.测试搜索新版本
5.pod uodate 更新项目中的框架