Git flow 開發流程

图解git flow开发流程 在实际生产开发的过程中,如果每个人都随意的创建分支,随意的提交commit,必将导致整个git仓库非常的混乱,不易于团队协作。Vincent Driessen 同学为了解决这个问题提出了A Successful Git Branching Model,最后形成了业内普遍采用的git 工作流程,大家都在约定的流程内使用git,使得团队协作效率大大提高‌ 下面是git flow的工作流程图: Git Flow 的常用分支 生产分支(master)‌ Master分支是仓库的主分支,这个分支包含最近发布到生 阅读详情

http://ihower.tw/blog/archives/5140/


Update: 2011/3/19 受邀有場分享 Git介紹,使用與開發流程 at Facebook 軟體開發團隊工具心得分享

大家都知道 Git 開 branch 很方便,非常鼓勵 topic branch,但有沒有一套模型流程告訴我們應該怎麼管理 branch 呢? 有人便整理出一套最佳實踐慣例 A successful Git branching model,我們團隊就採用了這套流程。簡單來說,他將 branch 分成兩個主要分支,三種支援性分支:

  • 主要分支
    • master: 永遠處在 production-ready 狀態
    • develop: 最新的下次發佈開發狀態
  • 支援性分支
    • Feature branches: 開發新功能都從 develop 分支出來,完成後 merge 回 develop
    • Release branches: 準備要 release 的版本,只修 bugs。從 develop 分支出來,完成後 merge 回 master 和 develop
    • Hotfix branches: 等不及 release 版本就必須馬上修 master 趕上線的情況。會從 master 分支出來,完成後 merge 回 master 和 develop

作者還提供了 git-flow 指令工具幫助我們很容易的實踐,用法如下:

首先是初始化動作:


    git flow init

初始化動作會問你一些問題,大抵是命名慣例:


No branches exist yet. Base branches must be created now.
Branch name for production releases: [master] 
Branch name for "next release" development: [develop] 
How to name your supporting branch prefixes?
Feature branches? [feature/] 
Release branches? [release/] 
Hotfix branches? [hotfix/] 
Support branches? [support/] 
Version tag prefix? []

設定完之後,預設的 branch 就變成 develop 了。有任何開發,一律都先開 branch:


git flow feature start some_awesome_feature
(以此類推 git flow release 和 git flow hotfix)

完成之後輸入


git flow feature finish some_awesome_feature

就會合併回 develop 並幫你刪除這個 (local) branch。

關於 REMOTE BRANCH

這個 git-flow 工具並沒有幫我們處理 remote branch,所以如果你的 branch 要 push 出去分享給別人,就要自己打 git 指令啦 同事留言說有支援啦:

push 一個 feature branch 到遠端:


git flow feature publish some_awesome_feature 
或 git push origin feature/some_awesome_feature

追蹤一個遠端的 branch:


git flow feature track some_awesome_feature 
或 git checkout -b feature/some_awesome_feature -t origin/feature/some_awesome_feature

刪除遠端的 branch:


git push origin :feature/some_awesome_feature

我們還碰到一個問題是輸入 git flow feature finish 時出現以下錯誤:


warning: not deleting branch 'feature/some_awesome_feature' that is not yet merged to
         'refs/remotes/origin/feature/some_awesome_feature', even though it is merged to HEAD.
error: The branch 'feature/some_awesome_feature' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature/some_awesome_feature'.

原因是這個 feature branch 一開始是從遠端 checkout 出來的,以及這個 feature branch 有 commit 沒有 push 回去 ,所以 git flow 不敢幫你刪除 local branch,這時候其實 merge 動作已經完成了,所以你可以手動輸入 git branch -D feature/some_awesome_feature 強制刪除 local branch 即可。(小結論:git-flow 只是個輔助工具,了解 git 還是必要的)

關於 FEATURE BRANCH 的合併

如果是開發時間比較久的 feature branch,很可能會因為 1. 不定時的 merge develop 與新版同步 2. 實驗性質的修改 3. 需求的變更 等等因素,而讓這個 feature branch 的 commit 記錄變成髒髒的,這時候我們會用以下的方式來做 merge 動作:

1. 先對 feature branch 做 `git rebase develop`。會很苦,但是弄完會很有成就感,整個 branch commit history 會變成很乾淨。請學 interactive mode,可以讓你拿掉一些 commit、合併或修改,你也可以 rebase 多次直到滿意為止。
2. 在從 develop bracnh 做 `git merge feature/some_awesome_feature –no-ff`,–no-ff 的意思是會強制留一個 merge commit log 記錄,這可以讓 commit tree 看清楚發生了 merge 動作。(因為我們剛做了 rebase,而 git 預設的合併模式是 fast-forward,所以如果不加 –no-ff 是不會有 merge commit 的) 這個 merge commit 的另一個額外方便之處是,如果想要 reset/revert 整個 branch 只要 reset/revert 這個 commit 就可以了。
3. 如果此 feature branch 有 remote branch,要先砍掉 `git push origin :feature/some_awesome_feature` 再 `git push origin develop` (這是因為 rebase 一個已經 push 出去的 repository,然後又把修改的 history push 出去,會造成超級大災難啊~)

先 rebase 再 merge –no-ff 這樣做的好處到底是什麼? 看圖體會一下吧:

每一次的 merge 就代表了一個 feature 完成,也可以很清楚看到這個 feature branch 底下包含哪些 commit。

對了,如果有用 Github 的話,請記得務必用一用它的 pull request 功能,我們會在 branch 完成後發一個 pull request,好讓大家可以對一整個 branch 做 code review 留言。

註:什麼是 rebase 可以參考舊作: Git 版本控制系統(3) 還沒 push 前可以做的事


【保姆级喂饭教程】Windows下安装Git Flow GitFlow 是一种 Git 工作流,这个工作流程围绕着project的发布(release)定义了一个严格的如何建立分支的模型。它是团队成员遵守的一种代码管理方案。由于它只是一个规范,你可以掌握规范后通过git命令实现,也可以通过一些工具的封装进行使用。Git之GitFlow工作流 | Gitflow Workflow(万字整理,已是最详) 阅读详情

相关推荐

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5845

Deepseek MLA模型结构详解:从MHA到MLA的演进与实战优化技巧

本文深入解析Deepseek MLA模型结构,从MHA到MLA的演进历程及实战优化技巧。重点介绍Multi-head Latent Attention的创新设计,包括潜空间投影、混合维度及RoPE兼容方案,显著提升显存效率与计算性能。通过实测数据对比,MLA在显存占用、推理速度及语言理解能力上展现出卓越平衡。

weixin_33712987的博客 427

Elsevier投稿避坑指南:Ocean Engineering论文格式要求详解(附Checklist模板)

本文详细解析Elsevier旗下期刊Ocean Engineering的投稿格式要求与常见陷阱,提供实用的Checklist模板。涵盖文章类型确认、作者贡献声明、图表规范、数据声明等关键环节,帮助研究者高效通过格式审查。特别强调LaTeX排版细节、图表分辨率要求及现代伦理声明规范,助力海洋工程领域学者顺利投稿。

weixin_33734785的博客 1500

git-flow 流程 备忘清单

关于 git-flow 是一个 git 扩展集,按 Vincent Driessen 的分支模型提供高层次的库操作。查看详情 ★ ★ ★ 这个备忘清单展示了 git-flow 的基本操作和效果。 ★ ★ ★ 基础建议 Git flow 提供了极出色的命令帮忙以及输出提示。请仔细阅读并观察发生了什么事情... macOS 程序Sourcetree是一个极出色的 git 界面客户端...

GarfieldEr007的专栏 753

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

SkyWalking跨线程Trace传递实战:手把手教你用RunnableWrapper解决异步链路中断问题

本文深入解析了SkyWalking在异步编程场景下链路追踪中断的根源,并提供了使用RunnableWrapper等官方包装类的实战解决方案。通过详细的原理解析和代码示例,手把手指导开发者如何实现跨线程的Trace传递,确保分布式系统监控链路的完整性,有效解决异步任务导致的链路中断问题。

sand8的博客 495

idea git-flow插件流程测试

新迭代开发流程 git flow init -f git-flow-start 001 (**选择从develop 创建本地分支feature/0001,切换到本地feature/001分支) **modify git-commit git-flow-publish(push + 远程创建分支 feature/0001) **modify git-commit git-f...

sinat_28360233的博客 844

Eigen 直线拟合/曲线拟合/圆拟合/椭圆拟合

使用Eigen库进行直线拟合是数据分析和科学计算中的常见任务,主要通过最小二乘法实现。该代码演示了二维空间中的直线拟合,输出斜率和截距。

深之JohnChen的专栏 1599

一个成功的git分支模型

原文:http://nvie.com/posts/a-successful-git-branching-model/ 转载中文翻译:http://www.juvenxu.com/2010/11/28/a-successful-git-branching-model/ 非常值得学习的git开发模型

sparksalmon的专栏 559

ESP32-C3模组上实现蓝牙BLE配网功能(1)

ESP32-C3模组上实现蓝牙BLE配网功能(1)

phmatthaus的专栏 2279

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5787

Gitflow工作流程

在工作场合实施Git的时候,有很多种工作流程可供选择,此时反而会让你手足无措。本文罗列了企业团队最常用的一些Git工作流程,包括Centralized Workflow、Feature Branch Workflow、Gitflow Workflow、Forking Workflow。愿以此文抛砖引玉。 在你开始阅读之前,请记住:这些流程应被视作为指导方针,而非“铁律”。我们只是想告诉你可能的做...

我是传奇 999

AI Agent智能体在Android开发中的应用

本文探讨了AIAgent(智能代理体)在Android开发中的应用,涵盖技术原理、实践案例与未来趋势。AIAgent通过机器学习、自然语言处理等技术实现代码生成、测试自动化及性能优化,显著提升开发效率。例如,强化学习模型可优化APP响应时间(公式:$\text{响应时间}=f(\text{负载},\text{资源})$),自动化测试覆盖率提升至95%。

郑伟强dev的专栏 124

Git Flow流程开发流程:以发布为中心

Git Flow流程开发流程:以发布为中心

xiang8766的博客 746

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Git:企业级开发模型】Git企业级Git工作流实战:基于Git Flow的分支模型与开发流程

我们用一张图总结一下上面五种分支之间的关系——

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 3448

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Git Flow开发流程;创建分支与合并分支;解决冲突

Git Flow开发流程举例 项目背景: 有一群人共同开发一个博客网站。 项目人员: 开发人员: a、b 开发 leader:c 测试人员: d 部署人员:e 项目分工: a 负责 articles 文章模块,b 负责 login 登录模块 c 负责审核和合并 a 和 b 开发的模块代码(代码 review 和合并代码到 develop 和 master 分支) d 需要等模块开发完毕后...

Bule_daze的博客 1890

【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚

从为什么需要企业级开发模型讲起,深入 Git Flow / GitHub Flow / GitLab Flow 三大经典模型的原理与对比,再到发版流程规范、Code Owner 制度、事故应急回滚,最后用大厂发版流程实战把所有知识串起来。

分享 AI 时代程序员的进阶之路:大模型应用、AI 编程工具实战,同时沉淀 C / Linux 底层技术笔记。与君共赴,万里征途。 2525

Git指南-Git-flow开发流程

Git-flow简介 简单来说,git-flow 就是在 git branch git tag基础上封装出来的代码分支管理模型,把实际开发模拟成 master develop feature release hotfix support 几种场景,其中 master 对应发布上线,develop 对应开发,其他几个在不同的情况下出现。通过封装,git-flow 屏蔽了 git branch 等相对...

weixin_30872671的博客 182

git flow开发流程_基于中继的开发与Git Flow

git flow开发流程 注意:我最初是在Toptal博客上发表此文章的。 为了开发高质量的软件,我们需要能够跟踪所有更改并在必要时将其撤消。 版本控制系统通过跟踪项目历史记录并帮助合并多人所做的更改来填补这一角色。 它们极大地加快了工作速度,并使我们能够更轻松地发现错误。 此外,主要得益于这些工具,可以在分布式团队中工作。 它们使多个人可以同时处理项目的不同部分,然后将其结果合并为一个...

编程故事的地方 187

git-flow开发流程

一、git-flow介绍 一旦安装安装 git-flow,你将会拥有一些扩展命令。这些命令会在一个预定义的顺序下自动执行多个操作。是的,这就是我们的工作流程! git-flow 并不是要替代 Git,它仅仅是非常聪明有效地把标准的 Git 命令用脚本组合了起来。 二、git-flow安装 sudo apt-get install git-flow 三、git-flow初始化...

tianjiewang的专栏 904

Git flow开发流程

git flow git clone xxx git flow init 自动切换到develop分支 [master] 主分支,不做任何修改,只负责push [develop] 开发分支 [feature/] 功能开发 [release/] 版本发布 [hotfix/] 热修复 [support/] 技术支持 关于feature分支开发步骤 1、基于master分支,创建develop分支 2、基于develop分支,创建feature分支 3、feature

任昌伟 440

Git-Flow 开发流程介绍

引言 编写的目的 -通过规范化的流程,使得产品、开发与测试等各个部门更高效的协同工作。 -通过规范化的流程使得产品高效稳定运行。 背景 在多组员,多项目等环境进行协同工作时,如果没有统一规范、统一流程,则会导致额外的工作量,甚至会做无用功。所以要减少版本冲突,减轻不必要的工作,就需要规范化的工作流程。 总则 -统一使用Git作为版本控制的主要工具。 -统一使用GitFlow流程管理控制...

Pony Chen's Blog 521

使用Git Flow管理开发流程

我们都知道, 在 git 的分支功能相对 svn 确实方便许多,而且也非常推荐使用分支来做开发. 我的做法是每个项目都有2个分支, master 和 develop. master 分支是主分支, 保证程序有一个 稳定版本, develop 则是开发用的分支, 几乎所有的功能开发, bug 修复都在这个分支上, 完成后 再合并回 master. 但是情况并不是这么简单. 有时当我们正在开发一

t1993ing的博客 555

告别混乱!使用Git Flow规范团队协作开发流程

Git Flow定义了明确的分支角色,包括主分支(main)、开发分支(develop)、功能分支(feature)、发布分支(release)和热修复分支(hotfix)。主分支用于存放稳定版本,开发分支作为集成分支,功能分支用于开发新需求,发布分支用于版本测试,热修复分支则用于紧急修复。Git Flow通过功能分支隔离不同开发任务,每个功能独立开发完成后才合并到develop分支,降低了冲突概率。Git Flow通过清晰的分支结构、规范的发布流程和灵活的修复机制,有效解决了团队协作中的代码管理问题。

gqclgx_051的博客 163

【Git技能】GitHub flow 与 Git 项目开发流程详解

目录一、简介二、GitHub flow三、流程详解(0)添加SSH公钥(1)Fork(2)Clone(3)添加远程仓库(4)查看分支和状态(5)新建分支(6)stash(7)commmit & push(8)提PR(9)Code Review(10)END(11)注意事项 一、简介        我们常常会将自己的代码托管至一些代码管理平台进行托管,比如Github、Gitee、或是自己搭建的托管平台等,其中Git就是重要的传输控

胡毛毛的博客 2089

git flow项目开发流程及简化,使用git回退到指定版本,和git中core.autocrlf的作用

项目中使用git flow的详细流程: 1.克隆远程仓库: git clone 远程仓库链接 注意: 1.当使用git clone指令后会自动在当前目录下自动以远程仓库链接中项目的名字来创建文件夹 如在当前目录“D:\Project\Unity”下鼠标右键选择“Git Bash Here”打开git窗口: 使用git clone指令后会自动根据远程仓库链接的项目名生成对应文件夹“testBranch”。 所以并不需要另外新建一个文件夹来放置远程仓库项目,避免嵌套 2.在c.....

啸风轩 1197
上一篇: git flow版本管理简介
下一篇: git flow开发模型
watkins
博客等级 码龄18年 1277粉丝 246原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值