配置管理工具GIT之管理模型

这篇文章联系了自个的项目经历及网上材料,再加上个人的一些体会。出于对git办理工具的酷爱,特编写此文。
git办理模型

http://www.nuoyapingtai.net 诺亚平台 www.nuoyapingtai.net
常见的解法是求解节点到根的途径,对途径做比对。参见:http://www.lyhfyl.com http://www.lyhfyl.com
分布式但集中化,这是对git办理模型最佳的论述。模型图如下图所示:

上图中origin是一个"中间库",当然这个中间库只是被认为是这样(由于Git是分布式的,从技能层面上来说是没有中间库的)。
       每个开发者pull和push到origin,但除了中间化的push-pull关系外,每个开发者还能够从其他开发者那pull changes。比方说,关于一个比较大的新特性,在把代码提交到origin之前,很可能会组织2个或多个开发者。上图中有几个小团队:Alice和Bob,Alice和David,Clair和David。团队成员先把代码pull到队长那里,再由队长pull到origin库。
首要分支设计

中间库房有两个分支:master和develop。
origin上的master分支,Git用户应当很熟悉,跟master并行的有一个develop分支

咱们把origin/master作为首要分支,源码的HEAD老是表明production-ready(可随时布置)状况。而origin/develop上的代码是为下一次的代码发布预备的。每日构建也是基于此分支。
当develop分支达到了一个安稳状况并预备发布时,一切的改动都要兼并到master分支,并标上版别号。这样每次与master兼并都会会有新的布置发布。如下是有关指令:
$git checkout –b develop master
在develop分支上进行开发作业。
$git checkout master
$git merge –no-ff develop
支撑分支设计

咱们的开发模型使用了一些支撑分支放在master和develop分支的旁边,便利开发小组之间的并行开发。不像首要分支,这些分支是有时间约束的,由于他们终究都会被移除。
咱们会使用到的不一样的分支有:Feature branches、Release branches、Hotfix branches。
每个分支都有各自的作用,并且有严厉的规则,如:只能从哪个分支上去新开分支,只能兼并到那个分支。
Feature branches
规则如下:
承继分支: develop
兼并分支:develop
命名标准:除了master,develop,release-,hotfix-
Feature branches是用来开发新特性的(短期,远期都能够)。当开端开发新特性时,很可能不晓得这个特性会出如今哪个方针版别。一旦开发完结就能够兼并到develop,当然假设开发失败,就能够扔掉。
创立及完结一个 Feature branch
依据Feature branches的规则,创立指令如下:
$ git checkout -b myfeature develop
新特性完结时,能够兼并到develop
$ git checkout develop
$ git merge --no-ff myfeature
$ git branch -d myfeature
$ git push origin develop
—no-ff (注:no fast foward)标签,使得每一次的兼并都创立一个新的commit记载。即使这个commit只是fast-foward,这样能够防止丢掉信息

Release branch
规则如下:
承继分支: develop
兼并分支:develop 和 master
命名标准:release-*
Release branch 是为新的production release预备的,能够有一些小的bug,并为发布预备一些元数据(版别号,构建日期等等)。把一切的这些作业都放到 Release branch,develop branch就能更明晰地晓得下一个版别要开发哪些特性。
从develop分支兼并到release分支的关键因素是:develop分支达到了release分支所要求的状况。最少一切对于该release的特性要被兼并。至于那些将来会有的特性能够先放一放。然后即是为接下来即将要发布的版别分配一个版别号。
创立一个Release branch
Release branch是经过develop分支而创立。举个比方,假设1.1.5是当时的production release,然后会有一个比较大的版别发布。develop的状况现已能够发布版别了,经过商讨后,决议发布为1.2版别,所以咱们创立一个release分支,并给这个分支一个新的版别号
$ git checkout -b release-1.2 develop
这个新分支可能会存在必定的时间,直到能够被兼并到production branch。这段时间内,bug修补能够在这个分支上进行(而不是develop分支)。增加新特性(特别比较大的)是不允许的。终究仍是要被兼并到develop,然后持续在develop分支上开发,直到下一个版别。
完结一个release branch
当release branch现已预备就绪,需求做几件事。首要,release分支被兼并到master分支上(每一个提交到master上的commit都是一个新版别,牢记)。然后master上的commit都要增加tag,便利将来检查和回滚。终究release上所做的修改有必要兼并到develop分支上,确保bug已被修补。
前两个过程:
$ git checkout master
$ git merge --no-ff release-1.2
$ git tag -a 1.2
为了把release上的改动保存到develop,咱们需求兼并到develop
$ git checkout develop
$ git merge --no-ff release-1.2
这个过程可能会致使抵触,假设这样的话,处理抵触,然后再提交。
如今一切都完结了,能够把release branch干掉了。
$ git branch -d release-1.2
Hotfix branch
规则如下:
承继分支: master
兼并分支:develop 和 master
命名标准:hotfix-*
Hotfix branch和Release branch有几分类似,都是为了新的production release而预备的。比方运转过程中发现了bug,就有必要疾速处理,这时就能够创立一个Hotfix branch,处理完后兼并到master分支上。优点是开发人员能够持续作业,有专人来担任搞定这个bug。
创立Hotfix branch
Hotfix是从master分支上创立的。假设当时运转版别是1.2,然后发现有bug,可是develop还在开发中,不太安稳,这时就能够新开一个Hotfix branch,然后开端处理问题。
$ git checkout -b hotfix-1.2.1 master
处理问题,一次或几回commit
$ git commit -m "Fixed severe production problem"
完结Hotfix branch
当结束时,bugfix要被兼并到master,一起也要兼并到develop,确保下个版别发布时该bug已被修正。这跟release branch完结时一样。
首要更新master和tag release
$ git checkout master
$ git merge --no-ff hotfix-1.2.1
$ git tag -a 1.2.1
接下来与develop兼并
$ git checkout develop
$ git merge --no-ff hotfix-1.2.1
有一个破例,即是当存在一个release branch存在时,bugfix要被兼并到release而不是develop,由于release终究会被兼并到develop。
终究移除branch
$ git branch -d hotfix-1.2.1
总结

这个办理模型应当算是达到行业标准的一个模型了。在实践的开发过程中,假设不必太过于考虑项目本钱及项目成员的才能水平常,这样的模型应当是首选。

时间: 2024-10-05 06:52:19

配置管理工具GIT之管理模型的相关文章

基于git的源代码管理模型——git flow

说明: 本文以nvie的“a successful git branching model”为蓝本,结合我个人理解写成.如有谬误,还请各位指出.多谢! Note: This article is highly based on nvie's a successful git branching model. Thanks nvie. Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git

Git Flow-基于git的源代码管理模型

Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具. 2010年5月,在一篇名为"一种成功的Git分支模型"的博文中,@nvie介绍了一种在Git之上的软件开发模型.通过利用Git创建和管理分支的能力,为每个分支设定具有特定的含义名称,并将软件生命周期中的各类活动归并到不同的分支上.实现了软件开发过程不同操作的相互隔离

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

Git 源代码管理工具

Git 源代码管理工具 Git基本信息 Git :Git是一个“分布式”的版本控制工具 Git的作者是Linux之父 Linus Benedict Torvolds,当初开发Git仅仅是为了辅助Linux内核的开发 Git在国外已经很普及,在国内也慢慢开始普及 Git与SVN的区别 结构:SVN是“集中式”的版本控制,Git是“分布式”的版本控制 速度:(多数情况下) Git速度高于SVN的速度 分支:SVN的分支比较笨拙,可Git可以轻松的创建无限个分支 安全:Git的数据备份比SVN更安全,

Git代码管理工具

Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为了维护管理Linux的源代码写的一个工具 -在没有网络的情况下也可以提交代码(提交到本地),进行记录,有网络时再提交到服务器 Git安装 下载相应的版本并安装,记住你选择的安装目录 安装完成之后,打开dos窗口,输入 git --version   检测是否安装成功以及Git的版本 C:\Users

通过代码管理工具 git 完成一次完整的代码管理过程

1.从公共远程fork一份自己的本地远程之后,从本地远程 clone 到本地 2.将本地代码跟公共远程代码做关联配置 git remote add upstream https://github.com/volojs/create-template.git 3.此时查看本地代码所配置的远程有哪些 git remote -v origin https://github.com/suqiuhui/create-template (fetch) origin https://github.com/su

源代码管理工具-GIT

源代码管理工具-GIT 一. git 概述 1. git 简介? 什么是git? > git是一款开源的分布式版本控制工具 > 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源? > 作者是Linux之父:Linus Benedict Torvalds > 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码) git的现状? > 在国外已经非常普及,国内并未普及(在慢慢普及) > 越来越多的开源项目已经转移到git 2. 常见的

IOS Git源代码管理工具

1.新建一个"本地仓库" $ git init 2.配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.email [email protected] >上面一种配置方式是一次性的配置, 会配置到被管理文件的.git文件夹下 >下面一种配置方式是一劳永逸的方式: git config --global user.name lmj git config --global user.

代码管理工具git 个基本使用基础

Git  是一种分布式版本控制系统,对于开发人员来说是一种非常好的代码管理系统, 首先安装完后,进行一个初步的设置,进行一个全局变量的设置 Git  config  --global  user.name "chenping" Git  config –global user.email  [email protected] 进行的基本操作 一  :创建版本库 版本库也叫仓库,也可以理解成一个目录,这个目录的所有文件都会被git管理起来,每个文件的修改,git都可以记录, Cd