#新建代码库
git init # 在当前目录新建一个Git代码库
git init [project-name] # 新建一个目录,将其初始化为Git代码库
git clone [url] # 下载一个项目和它的整个代码历史
#配置git
git config [--global] user.name "your name"
git config [--global] user.email "your email address"
#分支
git branch -r # 查看远程分支
git br -v # 查看各个分支最后提交信息
git checkout [branch-name] # 切换到指定分支,并更新工作区
#标签
git tag # 列出所有tag
git show [tag] # 查看tag信息
#远程同步
git remote -v # 显示所有远程仓库
git remote show [remote] # 显示某个远程仓库的信息
git fetch [remote] # 下载远程仓库的所有变动
git pull [remote] [branch] # 取回远程仓库的变化,并与本地分支合并

git开发模型
feature br - develop br - release br - hotfix br - master - tag

exampleproj
|-- exampleproj-master-tag-0.1
|-- exampleproj-develop
|-- exampleproj-feature
|-- exampleproj-develop
|-- exampleproj-release
|-- exampleproj-hotfix
|-- exampleproj-master-tag-0.2
...

git经典协同模型:
中心仓库:包含master和develop两个分支
分支分类:

  • 主要分支:master和develop分支
  • 支持性分支:特性分支,发布分支,热补丁分支

简单介绍一下的各种分支:

  • Master - 与产品环境代码保持一致的分支,也就是每次发布完成之后发布的功能分支就要合并于此,以保持Master更新。
  • Develop - 开发的主分支,Feature和Release分支会基于此分支。
  • Feature - 具体要开发的功能的分支,完成后合并到Develop。
  • Release - 用于发布新版本的分支,完成后合并到Develop和Master。
  • HotFix - 用于紧急修复已发布的产品问题的分支,完成后合并到Develop和Master。


  最右边的是主分支,黄色的是develop分支,比如开发版本1.0,开发过程中master出现问题要修改,产生的就是红色点的,叫热补丁分支。
  红色的热补丁分支修改完成后,除了要合并到master外,还要合并到正在开发的develop分支,这样之后更新的版本如2.0合并到master后才不会出现同样的bug。完成后热补丁分支也就完成使命,可以销毁了。
  绿色部分的为发布分支。即当版本1.0(黄色部分)开发完成后,黄色部分可能继续开发下去,比如接着开发2.0,然后将1.0的版本以发布分支独立处出来,进行测试阶段的运行,然后途中出现问题,修复并且合并到develop分支,当该版本不再出现问题后没,即可将该分支合并到master,同时也要何合并到正在开发的develop分支(因为如果发布分支有修复了bug的话,合并后才能使下一个版本不会出现同样的bug),完成后,发布分支使命也完成了。
  最左边的紫红色部分,为特性分支,即当你在开发产品时,突发奇想想到了新功能或者新的解决方法或者其它等新尝试,但不敢保证可以完成这部分的开发,所以以特性分支独立出来开发。如果开发能够完成,既可以合并到develop分支里。

Git Flow中的分支

主分支

主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和development分支。

master分支

master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。

develop分支

develop分支是保存当前最新开发成果的分支。通常这个分支上的代码也是可进行每日夜间发布的代码(Nightly build)。因此这个分支有时也可以被称作“integration branch”。

当develop分支上的代码已实现了软件需求说明书中所有的功能,通过了所有的测试后,并且代码已经足够稳定时,就可以将所有的开发成果合并回master分支了。对于master分支上的新提交的代码建议都打上一个新的版本号标签(TAG),供后续代码跟踪使用。

因此,每次将develop分支上的代码合并回master分支时,我们都可以认为一个新的可供在生产环境中部署的版本就产生了。通常而言,“仅在发布新的可供部署的代码时才更新master分支上的代码”是推荐所有人都遵守的行为准则。基于此,理论上说,每当有代码提交到master分支时,我们可以使用Git Hook触发软件自动测试以及生产环境代码的自动更新工作。这些自动化操作将有利于减少新代码发布之后的一些事务性工作。

辅助分支

辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。

辅助分支包括:

  • 用于开发新功能时所使用的feature分支;
  • 用于辅助版本发布的release分支;
  • 用于修正生产代码中的缺陷的hotfix分支。

以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。

feature分支

使用规范:

  • 可以从develop分支发起feature分支
  • 代码必须合并回develop分支
  • feature分支的命名可以使用除master,develop,release-*,hotfix-*之外的任何名称

feature分支(有时也可以被叫做“topic分支”)通常是在开发一项新的软件功能的时候使用,这个分支上的代码变更最终合并回develop分支或者干脆被抛弃掉(例如实验性且效果不好的代码变更)。

一般而言,feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里。

release分支

使用规范:

  • 可以从develop分支派生
  • 必须合并回develop分支和master分支
  • 分支命名惯例:release-*

release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。

当develop分支上的代码已经包含了所有即将发布的版本中所计划包含的软件功能,并且已通过所有测试时,我们就可以考虑准备创建release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。

成功的派生了release分支,并被赋予版本号之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。版本号的命名可以依据项目定义的版本号命名规则进行。

hotfix分支

使用规范:

  • 可以从master分支派生
  • 必须合并回master分支和develop分支
  • 分支命名惯例:hotfix-*

除了是计划外创建的以外,hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。

当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。

这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。

常用分支命名示例:
tag/1.0.1 标签
master 主要
develop/1.0.2 开发
feature/my-xxx-feature 新功能 (创建自develop分支,开发完成后先合并到develop,然后删除分支)
release/1.1 预发布 (创建自develop分支,确定没问题合并到master和develop,然后删除分支)
fixbug-name 修复bug (创建自master分支,开发完成后合并到master和develop,然后删除分支)
hotfix-name 补丁 (创建自master分支,确定合并到master和develop,然后删除分支)

参考文章:

http://blog.csdn.net/dengsilinming/article/details/8000622 [Git 常用命令大全]
http://www.cnblogs.com/cspku/articles/Git_cmds.html [Git常用命令]
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html [常用 Git 命令清单]
http://blog.csdn.net/zymx14/article/details/53415231?locationNum=11&fps=1 [git原理图及git协同模型]
http://www.oschina.net/translate/a-successful-git-branching-model [介绍一个成功的 Git 分支模型]
http://blog.csdn.net/gong0791/article/details/47148989 [常用 Git 开发模型]
http://www.cnblogs.com/itech/p/5188929.html [四种常见 Git 工作流比较]
http://www.jianshu.com/p/ca5ee4ea6420 [Git 工作流的一些经验分享]
http://blog.jobbole.com/76867/ [Git工作流指南:Gitflow工作流]
https://www.ibm.com/developerworks/cn/java/j-lo-git-mange/index.html [Git 分支管理最佳实践]
http://semver.org/lang/zh-CN/ [语义化版本 2.0.0]
http://cheenwe.cn/2016-08-02/git-branch-and-usage/ [Git分支命名规范]
http://blog.sina.com.cn/s/blog_70c0040c0102vlkt.html [Git分支管理策略]
http://www.yiibai.com/git/git_handling_conflicts.html [Git处理冲突]
http://www.cnblogs.com/best/p/7474442.html [一个小时学会Git]

版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。
本文标题:php高效遍历文件夹、高效读取文件
本文链接:http://www.cnblogs.com/sochishun/p/7384188.html
本文作者:SoChishun (邮箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
发表日期:2017年8月17日

项目开发中git常用命令、git工作流、git分支模型的更多相关文章

  1. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

  2. 01 . Git常用命令及方法和分支管理

    原理 # Workspace:工作区 # Index / Stage:暂存区 # Repository:仓库区(或本地仓库) # Remote:远程仓库 本地分支关联远程 git branch --s ...

  3. git 常用命令使用,git bash通用命令

    git 常用命令 1.强制推送(慎用,除非你认为其他冲突等可以丢弃 或者不是很重要) git push -- force 2.创建文件等小命令 touch a // 创建一个a文件 >> ...

  4. git常用命令,学git代码管理

    下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一. ...

  5. git 常用命令 创建查看删除分支,创建查看删除tag等

      1. git 文档 https://github.com/progit/progit/blob/master/zh/02-git-basics/01-chapter2.markdown https ...

  6. git常用命令一、git cherry-pick

    在自己的分支查看想要合并的节点的commit id : Git log —oneline -3   //查看最新的三个提交 commit id 切换到总分支: Git fetch Git pull G ...

  7. Git常用命令及软件推荐

    查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id gi ...

  8. git常用命令说明教程

    git常用命令说明教程 git介绍 是一个分布式的,版本控制软件.每台使用git的电脑都是一个分版本库.svn是集中管理的. 安装git 一 git相关操作 1.官网下载最新版安装https://gi ...

  9. 转收藏:Git常用命令速查表

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  10. git常用命令2

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

随机推荐

  1. DQL、DML、DDL、DCL全名是啥?

    SQL(Structure Query Language)结构化查询语言 DQL(data query language)数据查询语言 select操作 DML(data manipulation l ...

  2. python实现atm机基本操作及购物车

    一.需求分析 ATM机要为用户提供转账,提现,还款,付款,消费流水,操作记录等操作接口 ATM机要为管理员提供创建用户,冻结解冻,修改额度的功能 ATM机管理员认证使用装饰器来实现 购物车要提供管理员 ...

  3. 从零开始的Python学习Episode 23——进程

    ---恢复内容开始--- 进程 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用 ...

  4. 5233杨光--Linux第二次实验

    实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 若不小心登出后,直接刷新页面即可 2. 环境使用 完成实验后可以点击桌面上方的“实验截图”保存并分享实 ...

  5. sampleFactory(女娲造人)

    使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象. package c ...

  6. Java Lock & Condition

    /* jdk1.5以后将同步和锁封装成了对象. 并将操作锁的隐式方式定义到了该对象中, 将隐式动作变成了显示动作. Lock接口: 出现替代了同步代码块或者同步函数.将同步的隐式锁操作变成现实锁操作. ...

  7. UIPickerView的使用

    简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...

  8. 谈谈Keil 中C51的内存分配与优化

    本帖最后由 Cresta 于 2014-1-21 10:49 编辑 看到这篇C51的内存分配和优化的文章,个人觉得分析的十分到位,在这里转给大家   C51的内存分配不同于一般的PC,内存空间有限,采 ...

  9. Express搭建NodeJS项目

    1.安装Node.js: 2.安装npm; 3.安装Express; 在本例中默认全局安装express 安装express生成器 如果没有安装express-generator或安装路径不对,会报以 ...

  10. sprint1

    6.0----------------------------------------------------- sprint演示 1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉 ...