news 2026/3/20 17:48:18

精通 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/3/19 9:24:42

抖音下载器AI分类扩展实战全流程:从架构设计到功能落地

抖音下载器AI分类扩展实战全流程&#xff1a;从架构设计到功能落地 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 引言&#xff1a;当下载工具遇上智能分类 你是否也曾面对这样的困境&#xff1a;下载了上…

作者头像 李华
网站建设 2026/3/15 10:52:51

AI绘画+对话?gpt-oss-20b-WEBUI多场景应用探索

AI绘画对话&#xff1f;gpt-oss-20b-WEBUI多场景应用探索 注意&#xff1a;标题中“AI绘画”为常见误读——gpt-oss-20b-WEBUI 是纯文本大语言模型推理界面&#xff0c;不支持图像生成、编辑或图文理解功能。本文将基于镜像真实能力&#xff0c;系统澄清认知偏差&#xff0c;聚…

作者头像 李华
网站建设 2026/3/18 15:17:51

Hunyuan-MT-7B-WEBUI部署避坑指南,少走弯路快上手

Hunyuan-MT-7B-WEBUI部署避坑指南&#xff0c;少走弯路快上手 你是不是也遇到过这样的情况&#xff1a;看到一个功能强大的AI镜像&#xff0c;兴冲冲下载部署&#xff0c;结果卡在CUDA版本不匹配、模型加载失败、端口冲突、Web界面打不开……折腾两小时&#xff0c;连首页都没…

作者头像 李华
网站建设 2026/3/20 9:23:44

GLM-4v-9b开源模型部署:Apache 2.0代码+OpenRAIL-M权重详解

GLM-4v-9b开源模型部署&#xff1a;Apache 2.0代码OpenRAIL-M权重详解 1. 为什么这款9B多模态模型值得你立刻试试&#xff1f; 你有没有遇到过这样的问题&#xff1a; 给一张密密麻麻的财务报表截图&#xff0c;让AI准确读出所有数字和趋势&#xff0c;结果它把小数点看丢了…

作者头像 李华
网站建设 2026/3/15 14:53:30

手把手教你配置/etc/rc.local,让脚本随系统启动

手把手教你配置/etc/rc.local&#xff0c;让脚本随系统启动 你是不是也遇到过这样的问题&#xff1a;写好了自动化脚本&#xff0c;每次重启后却要手动运行&#xff1f;或者部署了一个后台服务&#xff0c;总得登录服务器再敲一遍命令&#xff1f;其实&#xff0c;Linux系统早…

作者头像 李华