Git-flow 相对于标准 git 命令的优势

2025-05-27

Git-flow 相对于标准 git 命令的优势

在这篇文章中,我们将研究一个名为的 git 工作流程Git-flow,并讨论为什么应该使用它而不是标准 git 命令。


什么是 git-flow?

git-flow近年来,它变得非常流行,因为它提供了一些额外的命令。
它可以自动执行一些使用标准 git 命令时需要手动完成的任务。

git-flow 绝不是 Git 的替代品。它只是一组以巧妙方式组合标准 Git 命令的脚本。

安装 Git-flow

视窗:

对于 Windows 用户,Git for Windows推荐使用 。请按照Git for Windows 主页
上的说明安装 Git for Windows。从 开始(AVH 版本)已包含在内,因此您已完成所有操作。Git for Windows 2.6.4GitFlow

Linux(Ubuntu 18.04):

git-flow AVH editiongit-flow AVH Edition已随 Ubuntu 打包。您可以使用以下命令安装最新版本。

$ sudo apt-get install git-flow
Enter fullscreen mode Exit fullscreen mode

对于其他 Linux 发行版,请遵循以下说明

Mac OS X系统:

对于 Mac OS 安装,请按照以下说明操作

在项目中使用 Git-flow

您可以完全自行决定是否在此存储库中并行使用特殊的 git-flow 命令和常规 Git 命令。

首先,您必须git-flow使用命令在项目中进行初始化git flow init

$ git flow init
Initialized empty Git repository in E:/Development/projects/git-flow-tut/.git/
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/]
Bugfix branches? [bugfix/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
Hooks and filters directory? [E:/Development/projects/git-flow-tut/.git/hooks]
Enter fullscreen mode Exit fullscreen mode

虽然设置助手允许您输入任何您喜欢的名称,但我强烈建议您坚持使用默认命名方案,并只需按 确认每个步骤Enter

Git-flow 分支模型

替代文本

工作流模型git-flow需要您的存储库中有两个分支。

  • master分支包含生产环境的稳定代码。您无需直接提交到 master 分支master,而是可以在单独的分支上工作feature
  • 开发是您进行任何新开发工作的基础:当您启动新的功能分支时,它将基于开发。

这两个分支会在整个项目生命周期内保留。其他分支(例如用于功能或发布的分支)会根据需要创建,并在完成其用途后删除。

替代文本

功能分支

开始新功能

假设您要在项目中添加一个支付网关。这是一个新功能。

让我们开始一个新payment-gateway功能

$ git flow feature start payment-gateway
Switched to a new branch 'feature/payment-gateway'

Summary of actions:
- A new branch 'feature/payment-gateway' was created, based on 'develop'
- You are now on branch 'feature/payment-gateway'
Enter fullscreen mode Exit fullscreen mode

此操作基于“开发”创建一个新的功能分支并切换到它。

完成功能

在您完成并完成所有艰苦的工作之后,就该完成该功能了。

$ git flow feature finish payment-gateway
Switched to branch 'develop'
Updating 6bcf266..41748ad
Deleted branch feature/payment-gateway.
Enter fullscreen mode Exit fullscreen mode

此操作后,Git-flow删除(现已过时的)功能分支并检出到“开发”分支。

发布分支

开始发布

当“develop”分支准备好发布新版本时,使用 git flow release 命令启动发布。它会从“develop”分支创建一个发布分支。

$ git flow release start 1.1.5
Switched to a new branch 'release/1.1.5'
Enter fullscreen mode Exit fullscreen mode

完成发布

当需要完成发布时,请使用以下命令

$ git flow release finish 1.1.5
Enter fullscreen mode Exit fullscreen mode

此操作将立即执行以下任务:

  1. 它从远程存储库中提取信息以确保您保持最新状态。
  2. 然后,该版本将合并回masterdevelop分支,这样您的生产代码以及所有功能分支都将基于最新代码。
  3. 发布提交带有发布名称的标签(1.1.5在我们的示例中)。
  4. 删除发布分支并签出至develop

热修复分支

这些是针对即使在发布后经过彻底测试仍可能出现的恶意错误。

启动修补程序

$ git flow hotfix start missing-link
Enter fullscreen mode Exit fullscreen mode

hotfix与分支非常相似release。不过,就像发布版本一样,我们会提升项目的版本号,当然,还会修复那个错误!

但我们需要记住一件事,它Hotfix基于master分支,而release它基于develop分支

完成热修复

$ git flow hotfix finish missing-link
Enter fullscreen mode Exit fullscreen mode

该过程与完成发布非常相似:

  1. 这些更改被合并到master和 中develop,以确保错误不会再次出现在下一个版本中。
  2. hotfix标记以便于参考。
  3. 该分支被删除,并且“develop”再次被签出。

所以现在是构建/部署您的产品的时候了。

作为奖励,这里有一个很棒的插图,可以帮助您Git-flow轻松记住命令。

替代文本

我在Daniel Kummer 的 git-flow cheatsheet 仓库里找到了它。你可以去他的仓库里查看一下。

感谢您阅读我的博客。希望它能帮助您和您的团队提高工作效率。

请告诉我您是否已经在使用Git-flow或计划使用它?


在网络上找到我🕸:

文章来源:https://dev.to/soumyadey/git-flow-over-standard-git-commands-1kl7
PREV
在您的 React 应用中集成 Razorpay 支付网关
NEXT
AWS Lambda 剖析