发布时间:2026/8/12 18:55:41
09-基于功能分支的工作流 前面介绍了一种最基本的团队工作模型所有人都工作在master上写完了的commit可以通过push来发送到中央仓库并且可以使用pull来获取到别人的最新commits。这种工作模型解决了团队合作最基本的问题多人并行开发和版本管理。事实上这也是早期的 VCS——中央式 VCS 的工作模型。但这种工作模型也有它的限制使用这种工作模型时每个人的代码在被大家看到的时候就是它进入正式的生产库的时候。所有人的工作都会被直接push到master这导致每个人的代码在正式启用前无法被别人看到严格来讲是有办法的别人可以直接从你的电脑上pullGit 的「分布式」不是说说的。但——这种做法超级不方便这样就让代码在正式启用前的讨论和 review审阅非常不方便。现在的商业团队开发项目多是采用「边开发边发布、边开发边更新、边开发边修复」的持续开发策略所以代码分享的不便会极大地影响团队的开发效率。接下来要介绍的是目前最流行的团队开发的工作流Feature Branching。简介这种工作流的核心内容可以总结为两点任何新的功能feature或 bug 修复全都新建一个branch来写branch写完后合并到master然后删掉这个branch。这就是工作流最基本的模型。从上面的动图来看这种工作流似乎没什么特别之处。但实质上Feature Branching 这种工作流为团队开发时两个关键的问题——代码分享和一人多任务——提供了解决方案。1. 代码分享假设你在一个叫做「掘金」的团队工作现在你要开发一个叫做「掘金小册」的功能呵呵于是你创建了一个新的branch叫做books然后开始在books上进行开发工作。git checkout -b books在十几个commits 过后「掘金小册」的基本功能开发完毕你就把代码push到中央仓库例如 GitHub去然后告诉同事「嘿小册的基本功能写完了分支名是books谁有空的话帮我 review 一下吧。」git push origin books然后你的同事明明正好有空他就从中央仓库拉下来了你的代码开始读# 明明的电脑 git pull git chekcout books读完以后明明对你说说嗯我看完了我觉得不错可以合并到master于是你就把books合并到了master上去git checkout master git pull # merge 之前 pull 一下让 master 更新到和远程仓库同步 git merge books紧接着你把合并后的结果push到了中央仓库并删掉了books这个branchgit push git branch -d books git push origin -d books # 用 -d 参数把远程仓库的 branch 也删了如果同事有意见上面讲的是明明对你的代码没有意见而假如他在你的代码里看到了问题例如他跑来对你说「嘿你的代码缩进为什么用的是 TAB快改成空格不然砍死你哦。」这时你就可以把你的缩进改成空格然后做一个新的提交再push上去然后通知他「我改完啦」明明pull下来你的新提交看了看「嗯这下可以合并了。」于是你依照上面的那一套操作把代码合并进master并push了上去然后删掉了books。瞧代码在同事竖大拇指之前都不会正式发布到master挺方便的吧Pull Request事实上上面讲的这个流程还可以利用 Pull Request 来进一步简化。Pull Request 并不是 Git 的内容而是一些 Git 仓库服务提供方例如 GitHub所提供的一种便捷功能它可以让团队的成员方便地讨论一个branch并在讨论结束后一键合并这个branch到master。同样是把写好的branch给同事看使用 Pull Request 的话你可以这样做把branchpush到中央仓库在中央仓库处创建一个 Pull Request。以 GitHub 为例然后你的同事就可以在 GitHub 上看到你创建的 Pull Request 了。他们可以在 GitHub 的这个页面查看你的commits也可以给你评论表示赞同或提意见你接下来也可以根据他们的意见把新的commitspush上来这也页面会随着你新的push而展示出最新的commits。在讨论结束以后你们一致认为这个branch可以合并了你只需要点一下页面中那个绿色的 Merge pull request 按钮GitHub 就会自动地在中央仓库帮你把branch合并到master了然后你只要在本地pull一下把最新的内容拉到你的电脑上这件事情就算完成了。另外GitHub 还设计了一个贴心的 Delete branch 按钮方便你在合并之后一键删除branch。2. 一人多任务除了代码分享的便捷基于 Feature Branch 的工作流对于一人多任务的工作需求也提供了很好的支持。安安心心做事不被打扰做完一件再做下一件自然是很美好的事但现实往往不能这样。对于程序员来说一种很常见的情况是你正在认真写着代码忽然同事过来跟你说「内个……你这个功能先放一放吧我们最新讨论出要做另一个更重要的功能你来做一下吧。」其实虽然这种情况确实有点烦但如果你是在独立的branch上做事切换任务是很简单的。你只要稍微把目前未提交的代码简单收尾一下然后做一个带有「未完成」标记的提交例如在提交信息里标上「TODO」然后回到master去创建一个新的branch就好了。git checkout master git checkout -b new_feature上面这两行代码有更简单的操作方式不过为了小册内容的简洁性我就不引入更多的内容了有兴趣的话可以自己搜索一下。如果有一天需要回来继续做这个branch你只要用checkout切回来就可以继续了。小结这一节介绍了 Feature Branching 这种工作流。它的概念很简单每个新功能都新建一个branch来写写完以后把代码分享给同事看写的过程中也可以分享给同事讨论。另外借助 GitHub 等服务提供方的 Pull Request 功能可以让代码分享变得更加方便分支确定可以合并后把分支合并到master并删除分支。这种工作流由于功能强大而且概念和使用方式都很简单所以很受欢迎。再加上 GitHub 等平台提供了 Pull Request 的支持目前这种工作流是商业项目开发中最为流行的工作流。

相关新闻

2026/8/12 18:55:41

ExifToolGUI完整指南:免费开源图片元数据编辑器终极教程

ExifToolGUI完整指南:免费开源图片元数据编辑器终极教程 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾面对数千张照片,想要批量修改拍摄时间、添加GPS位置信息或统一版权声…

2026/8/12 18:50:41

微信小程序高性能粒子系统实战:基于Three.js的雨雪天气特效实现

1. 项目概述:当微信小程序遇见粒子特效最近在做一个需要展示3D场景的微信小程序项目,客户要求在特定场景下能动态切换天气效果,比如从晴天切换到下雨或下雪。这让我想到了用three.js的粒子系统来实现。在微信小程序里玩three.js本身就有不少坑…

2026/8/12 20:10:46

Android Studio无法识别模拟器?ADB连接原理与系统化解决方案

1. 项目概述:当Android Studio与模拟器“失联”作为一名常年与Android开发打交道的程序员,调试环节的顺畅与否直接决定了我们的开发效率。而在这个环节中,Android Studio与模拟器的连接,就像手机和充电线的关系——看似简单&#…

2026/8/12 20:10:46

买了网站主机后如何建设网站:从零基础到上线的实战避坑指南

恭喜你,迈出了数字化转型最关键的一步。很多人以为买了网站主机就像去超市买了个空冰箱,插上电就能自动装满美食,其实完全不是这么回事。主机只是你的“土地”,而网站是需要你亲手去耕种、去建设的“果实”。今天咱们不谈那些晦涩难懂的技术术语,就用最接地气的大白话,聊…

2026/8/12 20:10:46

最新版 MobaXterm 下载、安装、使用教程

2026最新版 MobaXterm 下载、安装、使用教程一、MobaXterm介绍二、MobaXterm下载1、MobaXterm 安装包下载三、MobaXterm 安装与启动1. Windows 安装版(固定电脑推荐)2. Windows 便携版(多设备切换推荐)四、汉化五、核心功能全教程…

2026/8/12 20:10:46

VSCode配置C/C++开发环境:从零搭建轻量级高效编程平台

这次我们来看一个C/C开发环境配置的实战项目。如果你正在学习C语言或C,但被复杂的开发环境搭建劝退,或者你厌倦了笨重的IDE,想找一个轻量、高效、可定制的代码编辑器,那么Visual Studio Code(VSCode)绝对是…

2026/8/12 20:10:46

MATLAB多峰高斯拟合实战:从原理到三峰分离的完整指南

1. 项目概述:从数据中“听”出三个声音 做数据分析或者信号处理的朋友,经常会遇到一种情况:拿到一组看似只有一个“鼓包”的数据,但仔细一看,或者经过一些预处理后,发现这个鼓包下面其实藏着好几个“小鼓包…

2026/8/12 20:05:46

基于MCP与Trae的Playwright浏览器自动化:AI智能体驱动的新范式

1. 项目概述:当Playwright遇见MCP与Trae,浏览器自动化的新范式如果你和我一样,长期在Web自动化、爬虫或者前端测试的泥潭里摸爬滚打,那你一定对“浏览器自动化”这个词又爱又恨。爱的是它解放了双手,能处理大量重复的页…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/12 9:34:08

Ubuntu 23.10中双击运行.sh文件的完整指南:从权限原理到桌面配置

1. 项目概述:从一次“双击”引发的权限探索在Ubuntu桌面环境下,我们习惯了双击运行那些带有.exe后缀的Windows程序安装包,但当你拿到一个以.sh结尾的Shell脚本文件时,满怀期待地双击它,却很可能只看到一个文本编辑器窗…

2026/8/12 9:34:08

NumPy条件索引实战:np.where与np.argwhere高效数据筛选指南

1. 从一次数据筛选的“笨办法”说起 前几天,我帮一个刚入行的数据分析师同事看代码,他正在处理一批传感器数据,需要找出所有温度超过阈值的数据点,然后进行后续分析。我一看他的实现,好家伙,一个 for 循环…

2026/8/12 9:34:08

基于Docker与Selenium Grid构建高可用浏览器自动化测试环境

1. 项目概述:为什么需要容器化的浏览器自动化?在软件开发和测试领域,浏览器自动化早已不是新鲜事。无论是日常的UI回归测试、数据抓取,还是复杂的业务流程模拟,Selenium都是我们绕不开的利器。然而,但凡在团…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…