一.git版本控制原理

master(主分支), develop(分支),虽然是主分支和分支,却是平级关系,develop可以理解为开发库,master为生产库。

本地版本:master, develop GitHub上: master, develop

1.gitHub上master版本拉取代码到本地master。 2.本地创建develop(分支),在分支里开发。 3.修改本地开发代码后提交,提交到本地master(主分支)。 4.本地代码提交到GitHub上的Develop分支。 5.要出新版本或测试没什么问题后才提交到GitHub的master(主分支)。

注意:多人开发的情况下,都提交代码到gitHub的develop(分支),从gitHub的develop(分支)拉去代码到本地的develop(分支),再进行开发和代码合并,所有都没问题的时候才合并的gitHub的master(主分支),生成版本。

以上都是个人理解,如有异议,欢迎讨论学习 邮箱:jiang_yongchang@126.com

二.gitHub上创建项目

Screen Shot 2016-06-20 at 5.04.38 PM.png

获取到项目地址:

 

三.上传本地代码到GitHub

提供两种方法: 1.方法一: 在Mac的终端上cd到上传代码的.git目录(要上传的代码必须有.git隐藏文件,Xcode创建工程的时候勾选的,默认就创建)

Screen Shot 2016-06-20 at 5.38.44 PM.png

上传代码如下:

  1.  
    git init
  2.  
    git add . // add后 空格 加 点
  3.  
    git commit -m "first commit"
  4.  
    git remote add origin https://github.com/jiangyongchang126/hah.git
  5.  
    git push -u origin master

2.方法二:(推荐使用方法,下面也是按照这个方法)

①.在终端上cd到要存放的本地代码目录,
例如:cd /Users/jiangyongchang/work

Screen Shot 2016-06-20 at 5.46.56 PM.png

②. 克隆GitHub的代码到本地

git clone https://github.com/jiangyongchang126/MD5_RSA_AES_BASE64.git

Screen Shot 2016-06-20 at 5.51.59 PM.png

现在在本地的/Users/jiangyongchang/work下已经有了MD5_RSA_AES_BASE64目录,打开目录看到:

Screen Shot 2016-06-20 at 5.55.04 PM.png

README.md就是项目简介,GitHub上创建了才有
.gitignore 是上传git的忽略文件,比如cocopods导入的类库不上传等...
.git文件是链接本地和GitHub的桥梁,不能覆盖(下面会用到)

把要上传的代码copy到MD5_RSA_AES_BASE64下,.git 文件不用拷贝,.DS_Store文件也不能capy

Screen Shot 2016-06-20 at 6.06.29 PM.png

③.把添加代码后的工程提交代GitHub master(本地master到GitHub master)

终端cd到本地库.git隐藏文件目录

  1.  
    git branch // 看到分支情况,默认是只有master
  2.  
    git status // 看当前分支的状态
  3.  
    git add --all // 初始化时添加全部,平常提交代码是 git add+提交的文 件名 例如提交podfile文件:git add podfile
  4.  
    git commit -m 'first' //添加成功后提交 first是提交的注释
  5.  
    git push origin master:master // 提交本地代码到GitHub,origin相当于网路,master:master就是本地master推到GitHub master
  6.  
    例如:// git push origin master:develop // 把本地master推到远程develop

看到分支情况,默认是只有master

Screen Shot 2016-06-20 at 6.19.36 PM.png

当前分支状态,红色文件为需要add的文件

Screen Shot 2016-06-20 at 6.20.22 PM.png

add 后再看那些文件状态变绿色

Screen Shot 2016-06-20 at 6.20.43 PM.png

提交

Screen Shot 2016-06-20 at 6.20.56 PM.png

提交代码到GitHub master

Screen Shot 2016-06-20 at 6.21.10 PM.png

此时,刷新GitHub,代码已上传

四.develop master版本控制

下面展开版本控制:终端的路径一致不变.git目录

版本控制时,可以边操作边打开GitHub的客户端对比,当创建分支develop时,客户端上就会多一个分支develop(还没合并所有事空的),当把master的代码合并到develop时,客户端上的develop分支才有代码! 参照学习更加明显,在终端里面有时候显示的不明确。

Screen Shot 2016-06-20 at 6.52.16 PM.png

1.创建本地分支develop

git branch develop

现在 git branch一下发现有两个多了一个develop分支,且当前分支为master

Screen Shot 2016-06-20 at 6.41.27 PM.png

Screen Shot 2016-06-20 at 6.52.36 PM.png

2.把本地master的代码merge(合并)到develop

  1.  
    git checkout develop // 切换当前分支为develop
  2.  
    git merge master // 把master分支的代码合并到当前分支(develop)

Screen Shot 2016-06-20 at 6.45.02 PM.png

致此,代码以合并到了develop,并且当前分支为develop

3.merge(合并)代码到GitHUP develop(分支)

git push origin master:develop   // GitHub上并没有develop分支,执行这句命令后会自动创建一个GitHub develop分支

Screen Shot 2016-06-20 at 6.58.08 PM.png

相应的GitHub上也出现了develop分支

Screen Shot 2016-06-20 at 6.58.35 PM.png

4.到此,本地develop、master和GitHub上develop、master都一致啦!
重点来啦,怎么使用刚刚创建好的那些个develop、master?再创建一个本地分支develop1来模拟多人开发情况,本地的develope分支和develop1分支分别修改代码,然后提交到GitHub的develop分支,提交、拉去、冲突就能模拟多人开发环境了:

①.开发就用本地develop分支:查看分支状态,如果在master就切换当前分支到develop,

git checkout develop

打开Xcode写代码,之后把代码提交到本地develop,

  1.  
    git branch
  2.  
    git status
  3.  
    git add podfile MD5/EncryptionMD5.m MD5.xcodeproj/project.pbxproj
  4.  
    git commit -m '修改了podfile,viewcontrller'

Screen Shot 2016-06-20 at 8.05.14 PM.png

在develop分支下写的代码就会改变,而master和develop1中的不变,切换不同的分支,然后重新打开Xcode后发现确实如此! GitHub Desktop软件上也一致。

②.本地develop分支代码推到GitHub的develop分支。

  1.  
    // 应该先拉取 然后再推上去,
  2.  
    git pull origin develop:develop // 拉取到本地develop并合并,如果有冲突这个方法就不能用了,被拒绝拉取(下面的develop1分支会介绍另一种拉取方式)
  3.  
    git push origin develop:develop // 第一个develop是本地的,第二个是GitHub上的

看下GitHub上的master和develop确实有变动

Screen Shot 2016-06-20 at 8.12.27 PM.png

Screen Shot 2016-06-20 at 8.11.46 PM.png

③.OK,切换到develop1分支然后修改代码,拉取,提交

  1.  
    git checkout develop1
  2.  
    git branch
  3.  
    git status
  4.  
    git add podfile
  5.  
    git commit -m '修改了podfile,添加了AFNetWorking'

Screen Shot 2016-06-20 at 8.23.09 PM.png

现在GitHub上develop分支的podfile文件是 pod 'SDWebImage',但是本地develop1分支的podfile文件是 pod 'AFNetWorking',会产生冲突。

先拉取GitHub的develop分支到本地develop1,合并后再提交本地develop1到GitHub的develop分支。

git pull origin develop:develop1

Screen Shot 2016-06-20 at 8.29.03 PM.png

rejected 被拒绝了,因为有冲突。

现在换一种方法:

  1.  
    git fetch origin develop //更新GitHub的develop分支到当前本地分支(develop1)
  2.  
    git log -p develop1..origin/develop // 比较本地分支(develop1)和GitHub的develop分支的差别
  3.  
    git merge origin/develop // 合并冲突。
  4.  
    git status // 查看develop1分支的状态
  5.  
    vim podfile // 打开podfile文件
  6.  
    git add pod file
  7.  
    git commit -m '解决冲突'
  8.  
    git push origin develop1:develop // 将本地develop1合并到GitHub的develop

Screen Shot 2016-06-20 at 8.41.16 PM.png

podfile 文件有冲突

Screen Shot 2016-06-20 at 8.39.55 PM.png

④.切换本地分支到develop

  1.  
    git checkout develop
  2.  
    git pull origin develop:develop // 更新本地develop分支的代码,如果遇到冲突,解决方法参考③里面的。

目前来说,本地的develop、develop1和GitHub的develop分支保持一致啦,假设测试库的代码都已经测试通过了,要发版本!

⑤.合并代码到本地主master,合并代码到GitHub的master主分支

  1.  
    git checkout master // 切换到本地master主分支
  2.  
    git merge develop // 合并本地develop分支到本地master主分支。
  3.  
    git push origin master:master // 合并本地master主分支到GitHub的master主分支。

⑥.发布版本。

五.参考的文章

$ git pull
$ git push
$ git fetch
$ fetch与push的区别

加密的demo集成了MD5、RSA、AES、Base64:MD5_RSA_AES_BASE64下载

github的版本控制master和branch develop的更多相关文章

  1. VS2010中使用Github进行版本控制【补充】

    http://blog.csdn.net/softwave/article/details/8499264 前面我在文章<VS2010结合Github进行版本控制>中介绍了VS 2010中 ...

  2. 使用GitHub(三):使用VSCode+GitHub进行版本控制

    使用GitHub(三):使用VSCode+GitHub进行版本控制 本文简单介绍使用VSCode+GitHub进行项目或者代码的版本控制.本文主要目的是对学习内容进行总结以及方便日后查阅. 详细教程和 ...

  3. 使用码云,GitHub进行版本控制,并通过WebHook进行自动部署

    我们通常需要在 PUSH 代码到远程仓库时,线上环境会自动进行代码同步,这时候就需要用到WebHook,它会自动回调我们设定的http地址. 通过请求我们自已编写的脚本,来拉取代码,实现与远程仓库代码 ...

  4. 本地项目上传到github 报错“master -> master (non-fast-forward)”

    接下来 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令,此命令会在当前目录下创建一个.git文件夹. git init 第二步:将项目的所有文件添加到仓库中 git add . 这 ...

  5. vs2015上使用github进行版本控制

    我是用的是vs2015企业版 一.首先创建项目,右下角选择新建git存储库 二.在工具栏选择团队-管理连接,打开团队资源管理器,点击同步 . 三.选择下面的发布选项 四.在gitgub上新建仓库,得到 ...

  6. github 项目版本控制

    1.申请github账号 2.安装github for windows工具 安装后就可以使用Git Bash打开特制的终端,在里面用来命令行了.喜欢Git命令行方式的朋友到这里就够了. 打开Git B ...

  7. myeclipse跟eclipse中使用github做版本控制工具

    今天早上花了一上午的时间,了解了在myeclipse跟eclipse中使用github. 好吧 说说怎么做的,让大伙少走一点路,我就简单描述下,需要软件的私信我 第一:下载git 第二:靠谱.但是pu ...

  8. 最简单的 IntelliJ IDEA 中使用 GitHub 进行版本控制教程(持续更新中)

    一.在 IntelliJ IDEA 中新建一个项目并提交到 GitHub 1. 运行 IDEA,点击[Create New Project],在 IDEA 中新建一个项目. 2. 在选择项目类型对话框 ...

  9. git workflow常用命令

    git init git status git add readme.txt git add --all         Adds all new or modified files git comm ...

随机推荐

  1. Go语言实现:【剑指offer】二叉树的深度

    该题目来源于牛客网<剑指offer>专题. 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. Go语言实现: /** ...

  2. Go语言实现:【剑指offer】数据流中的中位数

    该题目来源于牛客网<剑指offer>专题. 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位 ...

  3. android 基础学习笔记1

    1.控件 XML种控件必须带有Layoutwidth 和height 1.textview 常用属性 text,textcolor,textsize Android 种颜色用十六进制数表示,共四种形式 ...

  4. Python编程:从入门到实践——【作业】——第六章(字典)

    第六章作业 6-1 人 : 使用一个字典来存储一个熟人的信息, 包括名. 姓. 年龄和居住的城市. 该字典应包含键first_name . last_name . age 和city . 将存储在该字 ...

  5. 风物长宜放眼量,人间正道是沧桑 - 一位北美 IT 技术人破局

    引言 我对于本科时光的印象,还停留在那所普通 211 大学的建筑物之间,我坐在大学的时光长廊里,满眼望去,都是经历的过的故事.可毕业后回首,却很少有人能说,自己从来没有迷茫过.迷茫,仿佛就是一团乌云, ...

  6. oracle数据库重要的查询语句

    查看所有数据文件(dbf文件)的存放位置 SQL> select name from v$datafile; 标红色的为默认表空间文件 SQL> select name from v$da ...

  7. centos7上安装docker社区版

    container(容器) docker(集装箱) 容器的优点 1. 启动速度快 2. 节省资源 3. 兼容性高 保证机器正常上网 #ping www.baidu.com CPU需要支持虚拟化 # g ...

  8. C# 数据类型详解以及变量、对象与内存

    学习刘铁猛老师<C#语言入门详解>视频,针对其中重点知识点进行总结. 1.什么是类型? 类型又称为数据类型(Data Type),数据类型在数据结构中的定义是一个值的集合以及定义在这个值集 ...

  9. MySQL中的执行计划explain

    一.用法及定义: explain为sql的执行计划.在sql前面加上explain关键字即可 如:explain select * from tbl_emp; 名词解释: id:[操作表的顺序] 1. ...

  10. navicat连接异常 authentication plugin 'caching_sha2_password' 问题解决

    mysql 8.0 默认使用 caching_sha2_password 身份验证机制 -- 从原来的 mysql_native_password 更改为 caching_sha2_password. ...