前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git Workflow简介

Git Workflow简介

作者头像
mantou
发布2019-02-13 16:36:51
7250
发布2019-02-13 16:36:51
举报
文章被收录于专栏:mantou大数据mantou大数据

1. Git WorkFlow介绍

Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。

2010年5月,在一篇名为“一种成功的Git分支模型”的博文中,@nvie介绍了一种在Git之上的软件开发模型。通过利用Git创建和管理分支的能力,为每个分支设定具有特定的含义名称,并将软件生命周期中的各类活动归并到不同的分支上。实现了软件开发过程不同操作的相互隔离。这种软件开发的活动模型被nwie称为“Git Flow”。

一般而言,软件开发模型有常见的瀑布模型、迭代开发模型、以及最近出现的敏捷开发模型等不同的模型。每种模型有各自应用场景。Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。因此,Git flow可以很好的于各种现有开发模型相结合使用。

image
image

2. Git VS SVN

SVN

Git

分布式管理

集中式管理

元数据存储

文件存储

offline log

online log

有本地分支

无本地分支

没有全局版本号

有全局版本号

内容完整性(SHA-1)

N/A

github,gitlab等配套

N/A

3.分支

3.1 历史分支(Master , Develop)

Gitflow工作流使用2个分支来记录项目的历史。master分支存储了正式发布的历史,而develop分支作为功能的集成分支。 这样也方便master分支上的所有提交分配一个版本号。

历史分支
历史分支

3.2 功能分支(Feature)

每个新功能位于一个自己的分支,这样可以push到中央仓库以备份和协作。 但功能分支不是从master分支上拉出新分支,而是使用develop分支作为父分支。当新功能完成时,合并回develop分支。 新功能提交应该从不直接与master分支交互。

功能分支
功能分支

3.3 发布分支(Release)

一旦develop分支上有了做一次发布(或者说快到了既定的发布日)的足够功能:本期要发布的所有功能已开发完成,测试通过。就从develop分支上fork一个release发布分支。 release分支用于开始发布循环,所以从这个时间点开始之后新的功能不能再加到这个分支上—— 这个分支只应该做Bug修复、文档生成和其它面向发布任务。 一旦对外发布的工作都完成了,发布分支合并到master分支并分配一个版本号打好Tag。 另外,这些从新建发布分支以来的做的修改要合并回develop分支。

使用一个用于发布准备的专门分支,使得一个团队可以在完善当前的发布版本的同时,另一个团队可以继续开发下个版本的功能。 这也打造定义良好的开发阶段(比如,可以很轻松地说,『这周我们要做准备发布版本4.0』,并且在仓库的目录结构中可以实际看到)。

发布分支
发布分支

3.4 维护分支(Hotfix)

维护分支或说是热修复(hotfix)分支用于生成快速给产品发布版(production releases)打补丁,这是唯一可以直接从master分支fork出来的分支。 修复完成,修改应该马上合并回master分支和develop分支(当前的发布分支),master分支应该用新的版本号打好Tag。

为Bug修复使用专门分支,让团队可以处理掉问题而不用打断其它工作或是等待下一个发布循环。 你可以把维护分支想成是一个直接在master分支上处理的临时发布。

维护分支
维护分支

4. 实践

  • 初始化
代码语言:javascript
复制
git flow init
  • 开发一个功能
代码语言:javascript
复制
git flow feature start <your feature>
git flow feature finish <your feature>
  • 完成开发一个功能
代码语言:javascript
复制
git flow feature publish <name>
git flow feature pull <remote> <name>
  • 发布版本
代码语言:javascript
复制
git flow release start <release> 
git flow release finish <release>
  • 修补bug
代码语言:javascript
复制
git flow hotfix start <release> 
git flow hotfix finish <release>

5.常用命令

创建分支: git branch mybranch 切换分支: git checkout mybranch 创建并切换分支: git checkout -b mybranch 更新master主线上的东西到该分支上:git rebase master 切换到master分支:git checkout master 更新mybranch分支上的东西到master上:git rebase mybranch 提交:git commit -a 对最近一次commit的进行修改:git commit -a –amend commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^ 合并分支:(merge from) git checkout master $ git merge mybranch (merge from mybranch) 删除分支: git branch -d mybranch 强制删除分支: git branch -D mybranch 列出所有分支: git branch 查看各个分支最后一次提交: git branch -v 查看哪些分支合并入当前分支: git branch –merged 查看哪些分支未合并入当前分支: git branch –no-merged 更新远程库到本地: git fetch origin 推送分支: git push origin mybranch 取远程分支合并到本地: git merge origin/mybranch 取远程分支并分化一个新分支: git checkout -b mybranch origin/mybranch

6. 学习资料推荐

  1. Git的资料整理
  2. Pro Git book
  3. 猴子都能懂的Git入门系列
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Git WorkFlow介绍
  • 2. Git VS SVN
  • 3.分支
    • 3.1 历史分支(Master , Develop)
      • 3.2 功能分支(Feature)
        • 3.3 发布分支(Release)
          • 3.4 维护分支(Hotfix)
          • 4. 实践
          • 5.常用命令
          • 6. 学习资料推荐
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档