base项目已经可以编译运行了,只不过没有实际功能而已。继续完善base项目前,我们需要考虑一下代码管理的事情了。

不管是一个人开发还是一个团队开发,对源代码进行版本管理是必须的,任何人对代码的的任何操作都可以被管理,理由还不够充分么。

以前使用过SVN,不过体验最好的,还是Git方式。

1.本地仓库简单易用,可以完全脱离远程仓库来使用
2.所有主干和分支都统一管理,切换自如
3.合并代码轻松愉快

Xcode自带代码Git管理,创建项目时候就提到过,当时有建议不采用,因为准备使用其他的管理工具。如果创建项目时候,使用了Xcode的git管理,可以通过下面两种方式修改:

方式一:
1.打开终端,输入指令:defaults write com.apple.finder AppleShowAllFiles -bool true(false 表示不显示隐藏类型的文件)
2.删除项目根目录下的隐藏文件.git
3.使用新的管理软件进行git管理

方式二:
直接将根目录下可见的文件及文件夹拷贝到新的根文件夹里,即可对该根文件夹进行版本管理。

源代码Git管理配置

管理方案:Github + SourceTree

1.前往https://github.com,注册一个账号

2.下载git客户端。Github也提供了一个客户端,直接使用账号密码登录来管理项目,下载地址:https://desktop.github.com/。也有用命令行来控制的朋友,我就不讨论了。我由于还在使用SourceTree管理其他项目,所以这里就继续采用SourceTree了。

使用git方式,多半都会涉及SSH key,简单记录一下生成过程。

说明一下:github客户端采用账号密码就可以验证使用者的身份,进而对自己的项目进行管理。SSH key简化了输入账号密码的流程,将SSH key加入github账号后,github授权生成该SSH key的设备可以使用git管理工具管理github上的项目。

SSH key生成及设置过程:
1.在Finder的当前用户根目录下,前往(shift+command+G)文件夹“~/.ssh”
 如果存在xxxx.pub文件,则是目标文件,用文本编辑器打开,将全部内容拷贝
 根据如下示图,找到github添加SSH key的位置:

如上图点击登录后页面的最右边的icon -> settings 进入设置页面

如上图选中SSH and GPG keys栏,点击“New SSH key”按钮,title用来描述用,key栏copy上拷贝的SSH key内容,最后点击“Add SSH key”即可。

2.如果上述文件不存在。打开终端,输入:ssh-keygen -t rsa -C "xxxx@xxxx.com",然后回车,根据提示完成操作即可。“xxxx@xxxx.com”建议为github的账号邮箱
   生成以后,按照步骤1即可。

完成上述操作以后,就可以使用SourceTree了。

到这里,我们可以选择在SourceTree中设置远程账户,先根据base项目生成本地仓库,然后根据本地仓库创建远程仓库。也可以不设置账户,先在Github上创建一个仓库名为“base”,然后使用ssh克隆到本地,再将项目文件移入其中。我使用了后者。

创建仓库

1.点击下图所示右上角加号按钮 -> new repository 出现如下页面

说明:输入仓库名和可选描述,类型默认公开,如果想设置为私密类型,需要付费。在此,提供另一个git仓库平台Gitlab(地址:https://about.gitlab.com/),可以免费创建私密仓库,使用方式和Github类似。

还可以勾选添加一个README文件和.gitignore文件,前者可以使得立即克隆该仓库到本地,忽略文件默认不显示,记录git仓库不管理的文件或者类型。license暂时就不没有必要添加了吧。

2.创建成功以后的页面如下图:

建议使用SSH验证方式克隆,点击clone or download按钮,复制字符串:xxxxxxx/base.git

3.打开本地已安装好的Sourcetree,点击“+新仓库” -> 从url克隆,出现如下界面

将copy的字符串作为源URL,目标路径和名称会自动填写。

我将Xcode创建的项目和SourceTree克隆下来的项目放到了同一个文件夹下,为了区别,将克隆下来的根目录重命名为“githubbase”。

完成克隆以后,将base项目复制到githubbase目录下即可。

打开这个本地仓库以后,就可以看到未暂存文件了。

关于SourceTree的使用,只记录如下几点:
1.勾选未暂存文件,可以加入已暂未文件列表,即成为待提交文件
2.左上角“提交”按钮,只是将修改提交到本地仓库
3.“推送”按钮即是提交到远程仓库
4.“拉取”按钮即是同步远程仓库最新代码
5.可以右键暂存文件,“忽略”此文件或者此类型,例如.xcworkspacedata
6.“分支”按钮可以创建新的分支,具体到分支或者主干版本,右键可以checkout切换当前编辑分支
7.右键到非编辑分支,可以合并入当前分支
8.右键到某个文件,可以查看修改日志
9.解决冲突可以使用外联工具
10.菜单栏SourceTree -> 偏好设置 ->通用,可以设置提交代码时候的全名和电子邮件地址作为身份标识
11.就算设置了通用身份标识,也可以为每个仓库分别设置。

右上角的设置 ->高级,可以设置当前仓库的用户信息

更多详细功能和操作就不一一记录了。

至此,源代码已经被管理起来。

源代码:https://github.com/ALongWay/base

App开发流程之源代码Git管理的更多相关文章

  1. git 一般的开发流程中的代码管理

    一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...

  2. 20个可以帮你简化iOS app开发流程的工具

    这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是 ...

  3. iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具

    如果想进入移动app开发这个领域,你总能从别的开发者或者网上或者书上找到各种各样的方法和工具,对于新手来说,还没有摸清门路就已经陷入迷茫了.这里推荐20个可以帮你简化app开发流程的工具.很多开发者都 ...

  4. app开发流程有哪些

    app开发流程是需求方和供求方相互协调的过程,一般分为需求分析.功能设计.功能实现.项目测试.上线等几个步骤,下面我们就来一起看看ytkah团队进行app开发各个流程主要做哪些事情,让您对app开发设 ...

  5. GitLab开发流程图示、Git命令一张图

    GitLab开发流程图示.Git命令一张图 一.GitLab开发流程图示 二.Git命令一张图 作图工具:ProcessOn 一.GitLab开发流程图示 二.Git命令一张图

  6. Git&Gitlab开发流程与运维管理

    Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...

  7. 深度讲解智能硬件手机APP开发流程

    常州做APP开发公司紫竹云科技分析,智能硬件产品的软件开发,除了APP和后台之外还有一个固件端的开发,由于固件是要运行产品上的,不过此时的硬件也是刚开始进行研发,所以是无法提供硬件来运行固件的.因此在 ...

  8. App开发流程之通用宏定义及头文件

    工欲善其事,必先利其器. 在正式实现各种炫酷的功能和UI前,做好准备工作是提高后续开发效率的必经之路. 所以,这个系列,我不是在各种堆技术,更关注的是“兵马动”之前的“粮草行”,有些繁琐,但当清晰理出 ...

  9. App开发流程之创建项目和工程基本配置

    我的开发环境为:Mac OS X EI Capitan(10.11.6),Xcode 7.3.1 首先说明一下这个项目的初衷,我并非要创建一个完整的上架应用,旨在创建一个可运行的,通用配置.架构,提供 ...

随机推荐

  1. 短日期比较 js

    function compareDate(startDate, endDate) { var arr = startDate.split("-"); var starttime = ...

  2. STL中vector小结

    ()使用vector之前必须包含头文件<vector>:#include<vector> ()namespace std{ template <class T, clas ...

  3. Could not load file or assembly 'System.Core, Version=2.0.5.0 和autofac冲突的问题

    在部署到iis的时候会出现这个状况. 解决:下载安装这个补丁 http://support.microsoft.com/kb/2468871 http://www.microsoft.com/zh-c ...

  4. Android性能优化之运算篇

    下面是运算篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Intro to Compute and Memory Problems Android中的Java代码会需要 ...

  5. Nginx+CI出现404错误

    最近刚学ci框架,做了个简单的项目,在本地搭服务器的环境都调通了,但是部署到远程服务器时: http://example.com/(index.php)/ 可以访问(为配置的默认controller- ...

  6. 初涉SQL Server性能问题(2/4):列出等待资源的会话

    在初涉SQL Server性能问题(1/4)里,我们知道了如何快速检查服务器实例上正运行的任务数和IO等待的任务数.这个是轻量级的脚本,不会给服务器造成任何压力,即使服务器在高负荷下,也可以正常获得结 ...

  7. HT图形组件设计之道(二)

    上一篇我们自定义CPU和内存的展示界面效果,这篇我们将继续采用HT完成一个新任务:实现一个能进行展开和合并切换动作的刀闸控件.对于电力SCADA和工业控制等领域的人机交互界面常需要预定义一堆的行业标准 ...

  8. Qt之QAbstractItemView视图项拖拽(一)

    一.需求说明 最近在搞视图项的拖拽,也上网查了一些资料,好多的文档都是一样的,只是被不通的网站所收录了(也有可能是被爬过去的,不明所以),不过也有一些文档写的不错,不过就是太简易,都是点睛之笔,总之功 ...

  9. 浅谈WeakHashMap

    Java WeakHashMap 到底Weak在哪里,它真的很弱吗?WeakHashMap 的适用场景是什么,使用时需要注意些什么?弱引用和强引用对Java GC有什么不同影响?本文将给出清晰而简洁的 ...

  10. linq之where子句

    在Linq中,where子句主要是来指定筛选元素的逻辑条件.linq查询中where子句不是必须的,可以不包括where子句,也可以包含多个where子句,where子句中可以包含一个或多个bool类 ...