Git工做流

Git基于分支的工做流程

详细内容看: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

Gitflow工做流

Forking工做流

Forking工做流和前面讨论的几种工做流有根本的不一样,这种工做流不是使用单个服务端仓库做为『中央』代码基线,而让各个开发者都有一个服务端仓库。这意味着各个代码贡献者有2个Git仓库而不是1个:一个本地私有的,另外一个服务端公开的。spa

Forking工做流

工做流程是这样的:版本控制

  • 团队里面的金康出去创业了,开了一家新公司,可是子旺舍不得金康,因此还在帮助金康开发,如今金康初识化了一个仓库,并进行了一些提交,本身在玩。
  • 子旺是一个好心人,想帮助金康作一些贡献,所以子旺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
相关文章
相关标签/搜索