关于git:大型开发项目中-git-工作流的最佳实践

42次阅读

共计 2636 个字符,预计需要花费 7 分钟才能阅读完成。

Gitflow Workflow 是一个 Git 工作流,有助于继续软件开发和施行 DevOps 实际。它由文森特·德里森 (Vincent Driessen) 在 nvie 首次出版并广受欢迎。Gitflow 工作流定义了围绕我的项目公布设计的严格分支模型。这为治理大型项目提供了一个弱小的框架。

Gitflow 非常适合具备预约公布周期的我的项目以及继续交付的 DevOps 最佳实际。除了性能分支工作流所需的内容之外,此工作流不会增加任何新概念或命令。相同,它为不同的分支调配十分具体的角色,并定义它们应该如何以及何时交互。除了性能 (feature) 分支之外,它还应用独自的分支来筹备、保护和记录公布。当然,您还能够利用 Feature Branch Workflow 的所有劣势:拉取申请、独立试验和更高效的合作。

Getting Started

Gitflow 实际上只是 Git 工作流的一个抽象概念。这意味着它决定了要设置什么样的分支以及如何将它们合并在一起。咱们将涉及以下分支的目标。git-flow 工具集是一个具备装置过程的理论命令行工具。git-flow 的装置过程很简略。git-flow 软件包可在多个操作系统上应用。在 OSX 零碎上,您能够执行 brew install git-flow。在 Windows 上,您须要下载并装置 git-flow。装置 git-flow 后,您能够通过执行 git flow init 在您的我的项目中应用它。Git-flow 是 Git 的包装器。git flow init 命令是默认 git init 命令的扩大,除了为您创立分支外,不会更改存储库中的任何内容。

How it works

Develop and Main Branches

此工作流应用两个分支来记录我的项目的历史记录,而不是单个 main 分支。Main 存储官网公布历史,开发分支作为性能的集成分支。用版本号标记主分支中的所有提交也很不便。

第一步是用一个 develop 分支补充默认的主分支。一种简略的办法是让开发人员在本地创立一个空的 develop 分支并将其推送到服务器:

git branch develop
git push -u origin develop

该分支将蕴含我的项目的残缺历史记录,而 main 将蕴含一个删节版本。其余开发人员当初应该克隆地方存储库并为 develop branch 创立一个跟踪分支。

Feature Branches

每个新性能都应该驻留在本人的分支中,能够将其推送到地方存储库进行备份 / 合作。然而,feature 分支不是从 main 分支进去,而是应用 develop 作为它们的父分支。当一个性能实现时,它会被合并回 develop branch。性能不应该间接与 main branch 交互。

请留神,feature 分支与 develop 分支相结合,就所有用意和目标而言,都是性能分支工作流。然而,Gitflow 工作流并不止于此。

feature 分支通常基于最新的开发分支创立。

Creating a feature branch

git checkout develop
git checkout -b feature_branch

Finishing a feature branch

当您实现该性能的开发工作后,下一步是将 feature_branch 合并到 develop 中。

git checkout develop
git merge feature_branch

Release Branches

一旦 develop 取得了足够的公布性能(或预约的公布日期行将到来),您就能够从 develop 中分出一个 release 分支。创立此分支将启动下一个公布周期,因而在此之后不能增加任何新性能——只有谬误修复、文档生成和其余面向公布的工作应该在此分支中进行。

一旦筹备好公布,release 分支就会合并到 main 分支并标记一个版本号。此外,它应该合并回 develop branch,自公布开始以来,后者可能曾经获得了停顿。

应用一个专门的分支来筹备公布能够让一个团队欠缺以后版本,而另一个团队持续为下一个版本开发性能。它还创立了明确定义的开发阶段(例如,很容易说“本周咱们正在为 4.0 版做筹备”,并在存储库的构造中理论看到它)。

制作 release 分支是另一个简略的分支操作。与性能分支一样,release 分支基于 develop 分支。能够应用以下办法创立新的公布分支。

git checkout develop
git checkout -b release/0.1.0

一旦公布筹备好公布,它将合并到 main 和 develop,而后 Release 分支将被删除。合并回 develop 很重要,因为要害更新可能已增加到 Release 分支,并且须要新性能能够拜访它们。如果您的组织强调代码审查,这将是拉取申请的现实场合。

要实现公布分支,请应用以下办法:

git checkout main
git merge release/0.1.0

Hotfix Branches

Maintenance 或“hotfix”分支用于疾速修补生产版本。Hotfix 分支很像 release 分支和 feature 分支,只是它们基于 main 而不是 develop。这是惟一应该间接从 main 分叉进去的分支。修复实现后,应将其合并到 main 和 develop(或以后 release 分支)中,并且 main 应应用更新的版本号进行标记。

领有专门的谬误修复开发线,您的团队能够在不中断工作流程的其余部分或期待下一个公布周期的状况下解决问题。您能够将 Maintenance 分支视为间接与 main 一起工作的长期 release 分支。能够应用以下办法创立修补程序分支:

git checkout main
git checkout -b hotfix_branch

相似于实现公布分支,修补程序分支合并到主分支和开发分支。

git checkout main
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch

总结

  • develop 分支是从 main 分支创立的
  • 从 develop 创立一个 Release 分支
  • feature 分支是从 develop 创立的
  • 当一个性能实现时,它会被合并到 develop 分支中
  • release 分支实现后,它会合并到 develop 和 main
  • 如果在 main 中检测到问题,则从 main 创立一个 hotfix 程序分支
  • 修补程序实现后,它将合并到 develop 和 main 分支

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0