原文A successful Git branching modelIn this post I present the development model that I’ve introduced for all of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management.
这篇文章,将介绍所有一年前我工作中或者个人项目的开发模型,这个模型已经被证明是十分有用的(successfull)。我老早就想写一些关于这个模型的文章,但是总是抽不出时间。在这篇文章中,我将不会介绍项目的详细情况,仅仅对分支的策略和发布管理作一个介绍。
It focuses around Git as the tool for the versioning of all of our source code.
我们将围绕这使用Git作为所有项目源码的版本控制工具。为何选择GIT?For a thorough discussion on the pros and cons of Git compared to centralized source code control systems, see the web. There are plenty of flame wars going on there. As a developer, I prefer Git above all other tools around today. Git really changed the way developers think of merging and branching. From the classic CVS/Subversion world I came from, merging/branching has always been considered a bit scary (“beware of merge conflicts, they bite you!”) and something you only do every once in a while.关于Git作为集中的源码控制系统的优缺点,可以查看一下链接,关于这个话题,有激烈的争论。作为一个开发者,与其他版本控制工具相比,我更喜欢Git,Git真正的改变了开发者关于合并和分支的思考(think)。我曾经也用过CVS、svn,分支和合并,真的很让人头疼(合并时产生的冲突),因此,有时你每次只能做一会工作(个人理解:因为svn这种版本控制库只有一个服务仓库,涉及公共资源,只能锁定编辑)But with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow, really. For example, in CVS/Subversion books, branching and merging is first discussed in the later chapters (for advanced users), while in every Git book, it’s already covered in chapter 3 (basics).但是对于Git来说,做这样的工作(分支、合并),太简单!它真的可以作为你日常工作流程中最核心的部分。例如,在有关CVS/svn的书籍中,分支和合并要放到最后一章才会阐述(针对高级用户),然后在Git相关的书籍中,首先就先跟你阐述分支和合并(第3章)。Enough about the tools, let’s head onto the development model. The model that I’m going to present here is essentially no more than a set of procedures that every team member has to follow in order to come to a managed software development process.关于这个工具的介绍,我们不再赘述,现在我们回到开发模式的话题上来。这个模型,基本上和每个开发团队管理软件开发流程是类似的。分布而集中The repository setup that we use and that works well with this branching model, is that with a central “truth” repo. Note that this repo is only considered to be the central one (since Git is a DVCS, there is no such thing as a central repo at a technical level). We will refer to this repo as origin, since this name is familiar to all Git users.我们使用这个分支模型很好工作的仓库,是真正意义上的中央仓库。这个仓库是唯一的中央仓库(因为Git本身就是分布式版本控制系统DVCS,所以这没有技术问题)。我们称这样一个中央仓库为origin,所有Git用户都知道origin这个名称。
Each developer pulls and pushes to origin. But besides the centralized push-pull relationships, each developer may also pull changes from other peers to form sub teams. For example, this might be useful to work together with two or more developers on a big new feature, before pushing the work in progress to origin prematurely. In the figure above, there are subteams of Alice and Bob, Alice and David, and Clair and David.每个开发者,都可以从origin获得(pull)资源,同时也能推送(push)到origin。除此之外,每个开发者可以从其他开发者那里获得资源,以此组建自己的一个小组。例如,当我们要开发一个大的新功能时,我们将和其他人一起协作,在提交到中央仓库origin之前,我们需要小组内部能够互相协作,这将是十分有用的。上图中,Alice和Bob是一个小组,同时Alice和David是一个小组,Clair和David又是一个小组。Technically, this means nothing more than that Alice has defined a Git remote, named bob, pointing to Bob’s repository, and vice versa.从技术实现上讲,这无非是在Alice的项目里,定义了一个指向Bot的远程链接而已(git remote add bob git@bobserver bob.git),反之也是一样,如此简单!!主要的分支At the core, the development model is greatly inspired by existing models out there. The central repo holds two main branches with an infinite lifetime:中央仓库有2个主要的分支,这些分支将一直存在:
master
develop
The master branch at origin should be familiar to every Git user. Parallel to the master branch, another branch exists called develop.中央仓库的master分支已经为所有Git用户熟知,与master分支并行的另外一个分支,我们称之为develop。We consider origin/master to be the main branch where the source code of HEAD always reflects a production-ready state.我们称origin/master为主要分支,因为分支的HEAD指向的源码总是反映了一个可以发布的产品状态(production-ready)。We consider origin/develop to be the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release. Some would call this the “integration branch”. This is where any automatic nightly builds are built from.我们称origin/develop为主要分支,因为分支的HEAD指向的源码,总是反映了下次发布前最新提交的开发代码。有些人称之为“集成分支”(integration barnch),因为我们的每晚自动构建都是基于此分支进行的。(例如hudson,可以做自动构建工作)。When the source code in the develop branch reaches a stable point and is ready to be released, all of the changes should be merged back into master somehow and then tagged with a release number. How this is done in detail will be discussed further on.当develop分支的源码稳定并且准备发布,所有的改变应该合并(merge)到master分支,同时做一个发布版本的标签(tag),我们将在后面讨论这个细节。Therefore, each time when changes are merged back into master, this is a new production release by definition. We tend to be very strict at this, so that theoretically, we could use a Git hook script to automatically build and roll-out our software to our production servers everytime there was a commit on master.因此,当每一次将所有更改合并回master时,将会产生一个新的可以发布的产品状态。我们往往对于这个操作的控制是比较严格的,每当往master分支提交时,我们可以使用Git的hook来自动构建和转出到产品服务器上。辅助分支
分享到:
相关推荐
Git 分支模型是一种高效、有序的软件开发流程,旨在促进团队协作、代码管理和版本控制。在Git中,分支是轻量级的,这使得频繁创建、合并分支变得简单且无负担,从而支持敏捷开发和持续集成。以下是这个成功Git分支...
在这篇文章中,我提出一个开发模型。我已经将这个开发模型引入到我所有的项目里(无论 在工作还是私人...我不会讲任何项目的具体细节,仅是关于分支策略和释放管理相关内容。 它主要体现了Git对我们源代码版本的管理。
《应用系统双模研发的GIT分支模型介绍》 在当今的IT行业中,传统企业面临着越来越多的双模研发挑战,即既要进行瀑布式开发,也要适应快速迭代的敏捷研发。Git作为分布式版本控制系统,其强大的分支管理功能对于解决...
文章中提到的Git分支模型是由Vincent Driessen提出的,这个模型被广泛采用,它定义了一个结构化的工作流程,以支持团队的日常开发工作。这个模型主要包括以下几个部分: 1. 中央存储库:虽然Git是分布式版本控制...
Git不仅提供了版本回溯、合并分支等基本功能,还支持各种高级操作,如代码统计。本主题聚焦于"Git分支代码统计",这是一项对于项目管理和团队协作至关重要的任务。通过统计每个分支的代码量,我们可以了解开发进度,...
- 《Git Flow工作流》:熟悉一种常见的分支模型,包括feature、develop、master、release和hotfix分支。 - 《Git最佳实践》:学习如何有效使用Git进行代码管理和协作。 3. **分支命令规范** - **特性(功能)分支*...
### Git分支管理详解 #### 一、分支的重要性与特点 几乎每种版本控制系统都支持分支功能,但在Git中,分支的使用方式与效率达到了前所未有的高度。传统的版本控制系统在创建分支时,通常需要复制整个项目的代码库...
CI/CD(持续集成/持续交付)策略以及git分支模型和以前的项目做一下分析比较,希望对各位有所帮助,也能有所思考,尤其是那些期望 搭建项目部署流水线或者想了解git分支模型的开发、运维人员。 废话不多说,由于近期...
### git分支管理策略详解 #### 一、引言 在当今的软件开发环境中,版本控制系统是必不可少的一部分。其中,Git因其高效性和灵活性成为了最受欢迎的选择之一。对于任何希望提高团队协作效率、确保代码质量和版本可...
介绍了Git分支和标签的原理及使用方法,Git分支内容包括Git原理、创建分支、合并分支、上传本地分支、跟踪远程分支等。Git标签内容包括查询Git标签、添加Git标签、为历史提交记录添加Git标签等。
linux在命令行上直接显示git分支的配置,不用再使用git branch命令查看当前分支了。
3-03git分支.ppt
模拟Git分支多人分支协作
### Git分支原理与命令详解 #### 一、Git分支机制概览 在深入探讨Git分支的具体操作之前,首先需要理解Git是如何管理和维护不同版本的。Git通过一系列的指针(称为引用,通常简称ref)来追踪项目的不同版本。每个...
通过遵循GitFlow分支模型并优化现有工作流程,可以显著提高团队协作效率,减少错误和冲突,确保项目代码的稳定性和可维护性。同时,良好的版本管理和分支策略也有助于团队成员更好地理解项目的进展和各自的责任。
GIT分支管理 远程分支 本地分支 GIT分支管理 远程分支 本地分支
本文档将对 Git 的基本概念和使用方法进行介绍,并对 Git 的分支模型进行详细的解释。 Git 的基本概念 Git 的基本概念包括快照、暂存区域和提交记录。快照是文件的当前状态,暂存区域是文件的暂存状态,提交记录是...
在企业环境中,Git 分支策略是确保项目高效、稳定推进的关键。以下是对"git分支版本管理.pdf"中提到的知识点的详细说明: 1. **主分支(master)**: 主分支代表了项目的正式发布版本,通常是最稳定的代码库,只...