news 2026/7/1 14:45:54

精通 Git:高效版本控制的三个基本工作流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
精通 Git:高效版本控制的三个基本工作流程

原文:towardsdatascience.com/mastering-git-the-3-essential-workflows-for-efficient-version-controlling-9bffe1883bd1

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1944a4751c033ba8823fcef7bcf2ff72.png

照片由 Prateek Katyal 在 Unsplash 提供

如果你希望高效且优雅地使用 Git,你找到了正确的位置!在阅读并应用了这里提出的工作流程后,我保证你的项目将提升到一个新的水平。采用 Git 工作流程对我来说不仅是一种良好的实践,而且是必须的!即使你不与他人协作,你也可以应用它,就像我发现它的好处以来我一直这样做。一开始可能觉得有些挑战,但随着实践,你会接受它并发现自己喜欢它。不拖延,让我们发现三个最重要的工作流程。

不是 Medium 会员?不用担心!通过这个*朋友链接*继续阅读。


目录:

· 1. 简介 · 2. 集中式工作流程 · 3. 功能分支工作流程 · 4. 分支工作流程 · 5. Gitflow 工作流程 · 6. 分支命名规范 · 7. 结论


1. 简介

嗯,当我刚开始接触并参与一些简单的、小型的项目时,我仅仅使用 Git 来保存我的项目并将它们上传到使用 Git 的平台。然而,当项目开始变得稍微大一些时,我发现自己在提交中迷失了方向,并且在回滚时遇到了困难。我还努力保持我的代码正常运行,因为它缺乏一致性,错误的风险增加了。此外,我还考虑了未来协作的可能性!这种策略代码审查有限,协作变得困难甚至不可能。因此,我对自己的说:“我需要一个 Git 工作流程!”这后者的开始就是我开始学习 Git 工作流程的旅程,在这篇教程中,我将与你分享我所学到的。

Git 工作流程是一套为管理 Git 仓库而建立的约定和实践。使用工作流程可以提供结构化和组织良好的 Git 仓库。它允许功能/修复的隔离;实现高效的代码审查和协作;保持主分支稳定;提高可追溯性;便于冲突解决;并简化回滚。开发团队设计了多种工作流程以满足他们的需求,以便有效地管理项目。然而,这些后者通常是以下三个基本工作流程之一或多个的采用或混合:功能分支工作流程、分支工作流程gitflow 工作流程

在这篇文章中,我们将探讨之前提到的三个基本 Git 工作流程。然而,在介绍这些之前,我将首先介绍集中化工作流程

2. 集中化工作流程

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3b5fdb50bf68a8e1eeea7772d7b933ec.png

集中化工作流程是最直接的工作流程,我在引言部分已经介绍过。在这种方法中,你只有一个分支“master”进行工作,所有更改都直接提交到它。实际上,这是我们作为初学者通常使用的方法。集中化工作流程适用于简单的项目和小型团队。我可以或多或少地推荐它用于简单项目,然而,我强烈不建议在团队工作中使用它,即使团队很小,原因与之前提到的相同。

3. 功能分支工作流程

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/26b8c652fe7b7ee3b516a378ad4aaae8.png

功能分支工作流程是一个直接的工作流程,它涉及为每个新的功能/修复创建一个专门的分支,而不是直接对主分支进行更改。然后,使用变基/合并将功能分支集成到主分支中。请注意,分支是从主分支创建的,它保留了项目的最新代码状态。

功能分支工作流程主要涉及以下命令:

  • 要切换到主分支:
git checkout master
  • 要将远程仓库中的更改更新到本地分支并自动合并:
git pull origin master
  • 要创建分支并激活它:
git checkout-b<feature_name>
  • 保存更改:
git commit-m"<Write a comment here>"
  • 要将分支推送到远程仓库:
git push origin<feature_name>
  • 要将分支合并到主分支:
# First, ensure you are on the master branchgit checkout master# Perform the mergegit merge<feature_name>
  • 要变基分支:
# Switch to the branch you want to rebasegit checkout<feature_name># Perform the rebasegit rebase master

执行合并和推送的顺序取决于采用的策略:在团队工作中,如果合并分配给单个团队成员,则其他成员应推送他们的分支而不是合并/变基然后推送带有更改的主分支。另一种可能的场景是在合并之前,功能分支被提交进行审查和集成(通常称为 pull request),然后该分支可以被合并或关闭。

功能分支工作流程是一种高效的方法。它提供了功能隔离,简化了协作,并实现了代码审查。此外,与集中式工作流程相比,主分支通常更稳定,引入错误的风险降低。然而,在某些情况下,会应用更复杂的工作流程,如以下章节所示。

4. 分叉工作流程

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2d2f34198745ac2928c702dffe58418e.png

分叉工作流程与之前的工作流程略有不同。一般来说,当新开发者加入 Git 项目时,他会克隆单个官方服务器端仓库,然后在本地上更新它并将更改推送到该仓库。在分叉工作流程中,他们不会直接在唯一的服务器端仓库上工作,而是在服务器上创建一个副本,作为他们的个人仓库:这个操作称为分叉。然后,分叉的仓库被克隆到本地,并将更改推送到它。最后,通过拉取请求将更改提出给官方仓库,以便其维护者审查和合并推送到的内容。

分叉工作流程主要涉及以下命令:

  • 要分叉一个仓库,通常使用托管平台提供的分叉按钮。没有直接用于分叉的 git 命令。

  • 要将分叉克隆到本地机器:

git clone<repository_url>
  • 要将原始仓库中做出的更改保留在分叉中,请将其添加为远程仓库:
git remote add upstream<original_repository_url>
  • 要与主仓库同步并保持分叉与主仓库中做出的更改保持最新,请从上游远程获取更改并将它们合并/变基到本地分支:
git fetch upstream git checkout main git merge upstream/main# or git rebase upstream/maingit push origin main
  • 要创建功能、进行更改、提交并推送到分叉,使用与分支工作流程相同的命令:
git checkout-b<feature_name>git commit-m"<Write a comment here>"git push origin<feature_name>
  • 要从分叉功能分支向主仓库分支创建拉取请求,通常也会使用托管平台提供的拉取请求按钮。

分叉工作流程是一种高效的方法,尤其是在贡献者没有直接写入主仓库的权限,如开源项目中。除了这一点之外,其步骤和流程与功能分支工作流程非常相似。

5. Gitflow 工作流程

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/32cfcb23675761e7b6e90f12fb9faed5.png

当在大型项目和大团队中工作时,保持产品和主分支的稳定,并在不同分支之间切换变得具有挑战性。为了克服这些挑战,Vincent Driessen 引入了 Gitflow。Gitflow 工作流程是一种流行的 Git 分支模型,它建立了一套关于如何组织和管理的分支的约定:它定义了特定的分支名称及其角色,以提高协作和发布管理。

Gitflow 工作流程包括两个主要分支(master 和 develop)和三种支持类型的分支(功能、发布和热修复分支):

  • master分支代表已准备就绪的生产代码。

  • develop分支代表正在进行中的开发代码。

  • feature分支是为新功能开发而创建的。

  • 发布分支是为新的生产版本创建的。

  • 热修复分支是为了修复生产代码中的问题而创建的。

嗯,现在分支已经定义好了,它们的管理方式如下:

  • 开发分支是从主分支创建的。

  • 功能分支是从开发分支创建的,一旦完成,就将其合并到开发分支

  • 如果在主分支中检测到问题,将从一个主分支创建一个热修复分支,一旦完成,就将其合并到主分支开发分支

  • 发布分支是从开发分支创建的,一旦完成,就将其合并到开发分支主分支。然后,主分支标记为版本号。

  • 创建发布分支后,不能添加新功能,只能添加错误修复、文档生成和其他与发布相关的任务。

如我们所推断,这个工作流程中没有引入新的命令,只定义了命名约定和管理规则:只使用创建和合并分支以及在这些分支之间切换的命令。

Gitflow 工作流程功能强大,为我们提供了一个简单、优雅且组织良好的工作环境,我们可以在这里协作,并在不同的分支之间轻松地查找和切换。此外,它可以根据我们的需求进行调整。例如,在处理个人离线项目时,我们可以省略发布分支。

6. 分支命名约定

在 Git 或通常的版本控制系统中,分支命名约定加强了项目结构和组织。它还简化了与 CI/CD 系统和基于 Git 的平台自动化和集成。然而,命名约定可能在项目和团队之间有所不同,但有一些常见的做法:

  • 代表生产就绪代码的默认分支命名为mainmaster

  • 开发分支命名为developdev

  • 功能分支的名称通常以前缀featurefeat开头,如下所示:feature/<feature_name>feat/<feature_name>

  • 发布分支的名称通常以前缀release开头,并使用发布版本命名,例如:release/version-0.1release/0.1

  • 热修复分支的名称通常以前缀hotfix开头,例如:hotfix/<hotfix_name>

7. 结论

这篇文章到此结束!在这篇文章中,我介绍了三个基本的 Git 工作流程。通过在我们的版本控制环境中采用 Git 工作流程,我们可以成功地维护和管理我们的项目。正如我在之前的教程中解释的,适应工作流程是 MLOps 的最佳实践之一。在接下来的文章中,我将详细阐述一些特定于知名版本控制平台的工作流程。

我通过我的文章的目的是为读者提供清晰、组织良好且易于跟随的教程,为涵盖的多样主题提供坚实的介绍,并促进良好的编码和推理技能。我正在进行一场永无止境的自我提升之旅,通过这些文章与你们分享我的发现。我自己也经常在需要时参考自己的文章作为宝贵的资源。

感谢阅读这篇文章。如果你欣赏我的教程,请通过关注我和订阅我的邮件列表来支持我。这样,你将收到关于我新文章的通知。如果你有任何问题或建议,请随时留下评论。

参考文献 & 进一步阅读

  • Atlassian 比较工作流程

  • Gitflow:一个成功的 Git 分支模型

  • Git 分支

  • Git 分布式工作流程

图片来源

本文中所有未在图注中提及来源的图片和图表均由作者提供。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 2:32:27

QQ空间记忆备份:用GetQzonehistory守护你的数字时光

QQ空间记忆备份&#xff1a;用GetQzonehistory守护你的数字时光 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 每个人的QQ空间里都藏着一段独特的青春故事。那些深夜写下的心情、毕业季…

作者头像 李华
网站建设 2026/6/24 8:39:14

从零开始:48GB显存服务器部署Qwen3-VL:30B图文教程

从零开始&#xff1a;48GB显存服务器部署Qwen3-VL:30B图文教程 你是否试过在本地部署一个真正能“看图说话”的多模态大模型&#xff1f;不是简单识别文字&#xff0c;而是理解画面中人物的情绪、场景的氛围、物品之间的关系——比如一张泛黄的老照片&#xff0c;它能告诉你&a…

作者头像 李华
网站建设 2026/6/23 8:01:25

GLM-4v-9b部署教程:单卡RTX 4090一键启动INT4量化镜像

GLM-4v-9b部署教程&#xff1a;单卡RTX 4090一键启动INT4量化镜像 1. 为什么这款多模态模型值得你花5分钟部署 你有没有试过把一张密密麻麻的Excel截图、带小字号的PDF图表&#xff0c;或者手机拍的模糊产品说明书丢给AI&#xff0c;结果它要么漏掉关键数字&#xff0c;要么把…

作者头像 李华
网站建设 2026/6/25 18:35:24

ModelScope SDK稳定版集成,下载模型更高效

ModelScope SDK稳定版集成&#xff0c;下载模型更高效 人像抠图这件事&#xff0c;说简单也简单——把人从背景里干净利落地分离出来&#xff1b;说难也真难——边缘发丝要自然、半透明区域要准确、阴影过渡要真实。过去我们常被各种环境配置、模型下载卡住&#xff1a;Tensor…

作者头像 李华
网站建设 2026/7/1 1:41:33

无损处理效率提升指南:重新定义视频编辑速度与质量的平衡

无损处理效率提升指南&#xff1a;重新定义视频编辑速度与质量的平衡 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut LosslessCut作为一款跨平台的无损视频/音频编辑工…

作者头像 李华
网站建设 2026/7/1 22:03:22

开箱即用:LightOnOCR-2-1B多语言OCR模型部署全攻略

开箱即用&#xff1a;LightOnOCR-2-1B多语言OCR模型部署全攻略 1. 为什么你需要一个“开箱即用”的OCR方案&#xff1f; 你是否遇到过这些场景&#xff1a; 手里有一叠扫描版合同、发票或技术手册&#xff0c;想快速转成可编辑文本&#xff0c;却卡在OCR部署环节——环境配不…

作者头像 李华