详细内容看:https://github.com/xirong/my-...git
集中式工做流是集中式版本控制工具中经常使用的开发流程,以主分支(mater)
为核心,全部开发人员经过更新主分支代码完成代码的开发工做。github
工做流程是这样的:bash
子旺
和金康
,他们两我的分别克隆了远程的仓库gitdemo
子旺
进行了一次提交,远程仓库就多了一个版本的提交git push orgin master
金康
想要提交到远程仓库,发现没办法提交push
,须要先git pull --rebase origin master
拉取的时候,同时进行变基操做,保证代码版本历史的漂亮
(固然这种漂亮有时候也须要付出一些代价)push
前须要先pull
。(不断的pull
是很是友好的,也是公司开发须要的)功能分支工做流以集中式工做流为基础,不一样的是为各个新功能分配一个专门的分支来开发。这样能够在把新功能集成到正式项目前,用Pull Requests
的方式讨论变动。pull requests
工做流能为每一个分支发起一个讨论,在分支合入正式项目以前,给其它开发者有表示赞同的机会。工具
工做流程是这样的:fetch
子旺
在master
分支上开了一个功能分支feature-xxx
,如今子旺饿了,要去吃点东西,在去以前要把编写的代码提交push
git push -u origin feature-xxx
(-u
选项设置本地分支去跟踪远程对应的分支)到远程的feature-xxx
分支上面。子旺
完成了功能开发,而且push
到他的远程分支feature-xxx
,他发起一个Pull Request
让团队的其它人知道功能已经完成。金康
变成了领导,领导收到了子旺
发来的pull request
,金康
对工做有些不满意,因此让子旺
进行修改,这些修改对话都是在pull request上完成的
。终于,金康
接受了pull request
进行了merge
,金康
在合并前必定要检出master
分支并确认是它是最新的,这样才能够合并到master
上。Gitflow
工做流master
分支,Gitflow
工做流使用两个分支来记录项目的历史。master
分支存储了正式发布的历史,而develop
分支做为功能的集成分支。push
到中央仓库以备份和协做。但功能分支不是从master分支
上拉出新分支,而是使用develop分支
做为父分支。develop
分支上有了作一次发布的功能,就从develop
分支上checkout
一个发布release分支
。 新建的分支用于开始发布循环,因此从这个时间点开始以后新的功能不能再加到这个分支上-----这个分支只应该作Bug修复、文档生成和其它面向发布任务
。 一旦对外发布的工做都完成了,发布release分支合并到master分支
并分配一个版本号打好Tag
。 另外,这些重新建发布分支以来的作的修改要合并回develop分支
。hotfix
)分支用于给产品发布版本快速生成补丁,这是惟一能够直接从master分支fork出来的分支
。 修复完成,修改应该立刻合并回master分支和develop分支
(当前的发布分支),master分支
应该用新的版本号打好Tag
。Forking
工做流Forking工做流
和前面讨论的几种工做流有根本的不一样,这种工做流不是使用单个服务端仓库做为『中央』代码基线,而让各个开发者都有一个服务端仓库。这意味着各个代码贡献者有2个Git仓库而不是1个
:一个本地私有的,另外一个服务端公开的。spa
工做流程是这样的:版本控制
金康
出去创业了,开了一家新公司,可是子旺舍不得金康,因此还在帮助金康开发,如今金康
初识化了一个仓库,并进行了一些提交,本身在玩。子旺
是一个好心人,想帮助金康
作一些贡献,所以子旺fork了金康的项目
,此时子旺
须要在本身的仓库中开设2个远程别名
—— 一个指向正式仓库(金康的仓库
),另外一个指向开发者本身的服务端仓库(子旺的仓库
)。这样作的目的是为了可以拉取金康的仓库更新
。代码以下:# 给金康的仓库起了一个远程别名 upstream git remote add upstream https://github/guojinkang/gitdemo git pull upstream master
子旺
完成了功能的开发,准备合并到金康的库上
,须要先进行一个pull request
,他想集成他的功能分支到上游远程仓库的master
分支中金康
收到了pull request
,金康
此时要检查子旺
的代码是否能够合并 git fetch https://github/fuziwang/gitdemo feature-branch
发现能够合并,所以进行合并。子旺
须要拉取最新的代码 git pull upstream master